当前位置: 代码迷 >> python >> Django:在迁移期间的运行时更改设置值
  详细解决方案

Django:在迁移期间的运行时更改设置值

热度:64   发布时间:2023-07-14 09:52:52.0

我正在尝试在创建迁移时在运行时更改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是否提供一种抽象来刷新迁移缓存并在其中添加新值? 如果没有,我必须使用哪些可能的选项来实现默认值?

注意:我试图避免因为我的数据库可能会提供数百万条记录,并且对其进行迭代并不理想。

由于外部原因,我也试图避免

谢谢!

您无法以这种方式实现它。 您可以检查 。