Django:在迁移运行时更改设置值
Posted
技术标签:
【中文标题】Django:在迁移运行时更改设置值【英文标题】:Django: Change settings value during run-time in migrations 【发布时间】:2019-02-26 18:39:29 【问题描述】:我试图在创建迁移时在运行时更改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
谢谢!
【问题讨论】:
【参考方案1】:您无法以这种方式实现它。您可以查看https://github.com/jazzband/django-constance。
【讨论】:
谢谢,这对我有帮助。另外,感谢 Jason,他提供了相同的 response on mailing list :)以上是关于Django:在迁移运行时更改设置值的主要内容,如果未能解决你的问题,请参考以下文章