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:如何设置默认值的主要内容,如果未能解决你的问题,请参考以下文章

django:DetailView 如何为两个模型工作或基于类的视图如何为两个模型工作?

如何为 django 创建自定义管理面板

如何为 Electron 应用程序服务 Django

如何处理 Django 中未应用的迁移?

如何为 Django 应用程序配置数据库权限?

如何为 django 管理员创建选项卡?