Django ChoiceArrayField:如何设置默认值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django ChoiceArrayField:如何设置默认值相关的知识,希望对你有一定的参考价值。
在Django2.0和admin部分的上下文中,如果数据库后端是PostgreSQL;
默认情况下,是否可以将“NULL”指定为字段列?
例如,
class ChoiceArrayField(ArrayField):
def formfield(self, **kwargs):
defaults = {
'form_class': forms.MultipleChoiceField,
'choices': self.base_field.choices,
}
defaults.update(kwargs)
return super(ArrayField, self).formfield(**defaults)
模型领域是:
capabilities = ChoiceArrayField(base_field=models.CharField(max_length=64, choices=PEER_CAPS, blank=True, null=True), default=list)
哪里
PEER_CAPS = (
("", "None"),
("blackholing", "blackholing"),
("irrguard", "irrguard"),
)
现在,默认值为“None”,但它保存值""
,因为它需要一个可迭代的,所以我不能拥有一个值等于None的变量。这对管理员网络应用程序来说很好。
但是在我将它保存到数据库之前我想将功能设置为NULL或空列表(因为PostgreSQL中的相应表是array
)
那可能吗 ?
答案
通过声明两次字段来修复此问题,如下所示:
capabilities = ChoiceArrayField(base_field=models.CharField(max_length=64, choices=PEER_CAPS, blank=True, null=True), default=list, blank=True, null=True)
以上是关于Django ChoiceArrayField:如何设置默认值的主要内容,如果未能解决你的问题,请参考以下文章