Мало что можно сделать с initial_data
приборами.Тем не менее, я всегда чувствовал, что они в любом случае имеют неоптимальную полезность.В редких случаях вы хотите, чтобы один и тот же прибор применялся снова и снова при каждом вызове syncdb
или migrate
.
Если вы используете какой-то прибор с другим именем, вы можете легко заставить его работать с вашей миграцией:добавив следующее в вашу прямую миграцию (из South docs )
from django.core.management import call_command
call_command("loaddata", "my_fixture.json")
Так что на самом деле все, что вам нужно, это какой-то способ сделать это только в определенных средах.Для dev самый простой путь - просто положиться на DEBUG
.Итак, предыдущий код выглядит так:
from django.conf import settings
from django.core.management import call_command
if settings.DEBUG:
call_command("loaddata", "dev_fixture.json")
Если вам нужен больший контроль, вы можете создать какую-то настройку, которая будет отличаться в каждой local_settings.py
(или любой другой методологии, которую вы используете для настройки параметров в зависимости от среды).Например:
# local_settings.py
ENV = 'staging'
# migration
from django.conf import settings
from django.core.management import call_command
if settings.ENV == 'staging':
call_command("loaddata", "staging_fixture.json")