django model中的choices 動態從數據庫中獲取

例如數據庫

model中,有一個type字段django

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

 

如今須要從數據庫中動態指定該字段的choices,取值的方法爲:code

# 獲取計劃類型列表

def get_type_list():

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

錯誤方法:get

直接it

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

弊端:
確實是從數據庫裏取了,不過數據庫中修改了之後,要重啓django應用才能加載
 配置

解決方案:
重寫model的構造方法,在構造方法中指定該字段的choices便可object

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

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

    self._meta.get_field('type').choices = get_type_list()
相關文章
相關標籤/搜索