python manage.py syncdb автоматически не загружает фикстуру initial_data.json в Python Django

У меня есть проект Python Django с приложением в apps/hello и фикстурой с исходными данными в /apps/hello/fixtures/initial_data.json

Когда я git clone скопировал свой проект Python Django с github, checkout понадобилась ветка и запуск

./manage.py syncdb

он создает пустые таблицы без содержимого i. е. не загружает данные из моего прибора initial_data. Django просит меня зарегистрировать суперпользователя, который уже зарегистрирован в приспособлении.

Operations to perform:
  Apply all migrations: admin, contenttypes, hello, auth, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying hello.0001_initial... OK
  Applying hello.0002_auto_20141217_1326... OK
  Applying hello.0003_auto_20141217_1329... OK
  Applying sessions.0001_initial... OK
You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): no

Однако я могу загружать данные вручную

./manage.py loaddata apps/hello/fixtures/initial_data.json

Installed 12 object(s) from 1 fixture(s)

Как заставить Django делать то же самое автоматически на syncdb?


person Sashko Lykhenko    schedule 18.12.2014    source источник


Ответы (2)


У меня была такая же проблема, и я решил ее, добавив несколько строк в файл settings.py.

FIXTURE_DIRS = (
    os.path.join(BASE_DIR, 'hello/fixtures'),
)
person Spoutnik16    schedule 18.12.2014

Если вы используете Django версии 1.7 или более поздней, вы, вероятно, должны знать, что автоматическая загрузка приборов устарела:

Если приложение использует миграции, автоматическая загрузка фикстур не происходит. Поскольку для приложений в Django 2.0 потребуется миграция, такое поведение считается устаревшим. Если вы хотите загрузить исходные данные для приложения, рассмотрите возможность переноса данных.

Если вы используете новые встроенные миграции, автоматическая загрузка фикстур не будет работать.

person Chris    schedule 18.12.2014