我有2个项目在2个不同的系统上运行。(称之为A和B)
在A中我有一个有一个动态选择字段的模型。
class ModelA(models.Model):
field1 = models.CharField(max_length=255, choices=get_field1_list())
#..some more fields
在get_field1_list()
函数中,我调用一个在系统B上运行的API,它返回一个来自ModelB(项目B)的元组列表(在选择字段中需要)
[(a,A), (b,B), (c,C)...]
现在,当我从管理面板对此模型(ModelB)进行更改时(假设再添加一行),我希望它应该反映在modelA选项中。 我刷新了管理面板,但它仍然没有显示。但是当我重新启动服务器A(本地服务器)时,我可以在ModelA(系统A)选项中看到新添加的(在系统B中)行。
所以我的问题是为什么会发生这种情况?如何在生产中解决此问题我可能不想每次都重启uwsgi或nginx。
答案 0 :(得分:1)
在Django 1.9中,我这样做
from django.utils.functional import lazy
class ModelA(models.Model):
field1 = models.CharField(max_length=255, blank=False, null=False)
# ..
def __init__(self, *args, **kwargs):
super(ModelA, self).__init__(*args, **kwargs)
self._meta.get_field('field1').choices = lazy(get_field1_list, list)()
请注意,我正在使用lazy
。你可以忽略那个