python - Django ArrayField 默认应该是可调用的
问题描述
我正在尝试在我的 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 []
这是我的代码:
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.
你能告诉我我做错了什么吗?
解决方案
使用default=get_default_subscriptions
(不带括号)代替default=get_default_subscriptions()
推荐阅读
- javascript - 如何将 webpack 自定义配置与 react js 一起使用?
- julia - 英特尔 MKL 致命错误:无法加载 libmkl_intel_thread.dylib。在 MacOS M1 中的 Julia Pluto 笔记本中
- javascript - 如果系列稍后更新,则不会显示高图表导出按钮
- python - Pyspark将JSON对象列拆分为多列
- python - Django bool 字段说明默认为 False,null 为 True
- python - 如何使用 matplotlib.pyplot 连接散点
- python - 在没有显示的情况下运行可执行的 PyQt5 python 程序
- python - 如何使用 curses 模块打印 Pi 符号
- c# - 如何隐藏 Datagridview winform 应用程序中的列?
- python - 尝试使用 eval() 在 Python 中获取关键字参数时出现 SyntaxError