Django ChoiceArrayField:如何设置默认值

时间:2018-03-02 13:47:25

标签: django python-3.x django-models django-admin

在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

这可能吗?

1 个答案:

答案 0 :(得分:0)

通过声明两次字段来修复此问题:

(?<=X-FileName:(\n)+$).+(?=Message-ID:)