首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django ArrayField默认值应该是可调用的

Django ArrayField默认值应该是可调用的
EN

Stack Overflow用户
提问于 2020-10-31 16:00:33
回答 2查看 1.2K关注 0票数 1

我试图在django项目中使用postgresql ArrayField,将其设置为默认设置,但我无法消除警告ArrayField default should be a callable instead of an instance so that it's not shared between all field instances. HINT: Use a callable instead, e.g. use list instead of []

这是我的密码:

代码语言:javascript
复制
def get_default_subscriptions():
    return 'Noticias, Promociones, Pagos, Compras'.split(', ') # this returns a list
 
class myModel(models.model):
    # other fields
    subscriptions = ArrayField(models.CharField(max_length=200), default=get_default_subscriptions()) # this is a callable, so, why the warning?

医生们说:If you give the field a default, ensure it’s a callable such as list (for an empty default) or a callable that returns a list (such as a function). Incorrectly using default=[] creates a mutable default that is shared between all instances of ArrayField.

你能告诉我我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-31 16:21:08

使用default=get_default_subscriptions (无偏执)代替default=get_default_subscriptions()

票数 3
EN

Stack Overflow用户

发布于 2020-10-31 16:49:40

要对Arakkal的答案添加一点说明,可调用是一个函数或绑定方法。您传递的是函数调用的返回,而不是函数本身。您实际上是内联地调用了get_default_subscriptions,而不是将函数本身交给Django,这样它就可以在需要时调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64623692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档