首页 > 解决方案 > ArrayField 中的列表实例有效吗?

问题描述

我有一些带有“donation_methods”字段的用户帐户。用户可以选择不同的方法来接受捐赠。默认情况下,每个用户都应该在数组中拥有值“现金”

donation_methods = ArrayField(
        models.CharField(
        max_length=15,
        choices=DONATION.CHOICES,
    ),
    default=list({DONATION.CASH}),
)

这是正确的方法吗,因为它是一个实例而不是可调用的?

标签: pythondjango

解决方案


ArrayField需要一个可调用的default

如果您为该字段提供默认值,请确保它是可调用的,例如列表(对于空默认值)或返回列表的可调用(例如函数)

然后你可以定义以下函数:

def donation_default():
    return [DONATION.CASH]

然后将您的字段设置为:

donation_methods = ArrayField(
    models.CharField(
    max_length=15,
    choices=DONATION.CHOICES,
    ),
    default=donation_default,
)

推荐阅读