我正在尝试在创建迁移期间在运行时更改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是否提供一种抽象来刷新迁移缓存并在其中添加新值?如果没有,我必须使用哪些可能的选项来实现默认值?
注意::我试图避免使用this solution,因为我的数据库可能会提供数百万条记录,并且对其进行迭代并不理想。
出于外部原因,我也试图避免使用django-livesettings
谢谢!