Django: изменение значения настроек во время выполнения в миграциях - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь изменить значение в settings.py во время выполнения при создании миграций.

settings.py:

...
magicVar = "initValue"

0002_init:

...
def change_magicVar(apps, schema_editor):
    settings.magicVar = "newValue"
...

operations = [
    migrations.RunPython(change_magicVar),
]
...

0003_changed_migrations:

...
def print_magicVar(apps, schema_editor):
   # Yay! It prints the correct value
   print (settings.magicVar) # prints: newValue
...

operations = [
   migrations.RunPython(print_magicVar),
   migrations.CreateModel(
     name='MagicModel',
        fields=[
            ('someMagic', 
               models.ForeignKey(
                  # Oops! This still has the old value, i.e *initValue*
                  # I want to achieve the *newValue* here!
                  default=settings.magicVar,
                  ... 
    )),

Я хочу изменить значение в миграциях, но похоже, что значение уже кэшировано.Предоставляет ли django абстракцию для обновления кэша миграций и добавления в него нового значения?Если нет, какие возможные варианты мне нужно для достижения этого значения по умолчанию?

Примечание: Я пытаюсь избежать этого решения , потому что моя база данных может дать миллионызаписей и итераций по ним не идеально.

По внешним причинам я также стараюсь избегать django-livesettings

Спасибо!

1 Ответ

0 голосов
/ 30 сентября 2018

Вы не можете достичь этого таким образом.Вы можете проверить https://github.com/jazzband/django-constance.

...