繁体   English   中英

Django管理员未在choiceField中反映动态选择

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM