[英]Django admin doesnot reflect dynmaic choices in choiceField
我有2个项目在2个不同的系统上运行(称为A和B)
AI中的模型具有一个动态选择字段。
class ModelA(models.Model):
field1 = models.CharField(max_length=255, choices=get_field1_list())
#..some more fields
在get_field1_list()
函数中,我调用一个在系统B上运行的API,它返回一个来自模型B(项目B)的元组列表(在选择字段中必需)。
[(a,A), (b,B), (c,C)...]
现在,当我从管理面板对此模型(ModelB)进行更改时(可以说再增加一行),因此我期望它应该反映在modelA选择中。 我刷新了管理面板,但仍然没有显示。 但是当我重新启动服务器A(本地服务器)时,可以在ModelA(系统A)选择中看到新添加的(在系统B中)行。
所以我的问题是为什么会这样? 我如何解决此问题,因为在生产中我可能不想每次都重新启动uwsgi或nginx。
在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
。 你可以忽略那个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.