问题描述
我正在尝试在创建迁移时在运行时更改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是否提供一种抽象来刷新迁移缓存并在其中添加新值? 如果没有,我必须使用哪些可能的选项来实现默认值?
注意:我试图避免因为我的数据库可能会提供数百万条记录,并且对其进行迭代并不理想。
由于外部原因,我也试图避免
谢谢!
1楼
您无法以这种方式实现它。 您可以检查 。