djangomodel中的choices动态从数据库中获取

编程

例如

model中,有一个type字段

type = models.CharField(max_length=255, default="BOSS", verbose_name="配置类型",choices=(("boss","boss"),("bass","bass"),))

 

现在需要从数据库中动态指定该字段的choices,取值的方法为:

# 获取计划类型列表

def get_type_list():

return PlanType.objects.values_list("name", "name")

错误方法:

直接

type = models.CharField(max_length=255, default="BOSS", verbose_name="配置类型",choices=get_type_list())

弊端:
确实是从数据库里取了,不过数据库中修改了以后,要重启django应用才能加载
 

解决方案:
重写model的构造方法,在构造方法中指定该字段的choices即可

def __init__(self, *args, **kwargs):

super(PlanItemConfig, self).__init__(*args, **kwargs)

self._meta.get_field("type").choices = get_type_list()

 

以上是 djangomodel中的choices动态从数据库中获取 的全部内容, 来源链接: utcz.com/z/511182.html

回到顶部