Question

JSONField设置为django中新列表的默认值的最佳方式是什么?

上下文

有一个模型,其中一个字段是项目列表.在没有设置项目的情况下,模型应该有一个空列表.

当前解决方案

from django.models import Model

class MyModel(Model):
    the_list_field = JSONField(default=[])

这是最好的方法吗?应该改为使用list吗?

谢谢!

推荐答案

根据Django documentation for JSONField,你确实应该使用default=list

请注意,这不仅适用于django.contrib.postgres.fields.JSONField,而且适用于所有其他类型的对象和函数in Python in general.

引用文档中的话:

如果给字段一个默认值,请确保它是可调用的,如list(表示空默认值)或返回列表的可调用对象(如函数).错误地使用default=[]会创建在所有实例之间共享的可变默认值

Django相关问答推荐

POST_SAVE接缝有错误

基于Django类的视图:除非登录,否则拒绝访问future 日期

如何在uwsgi中创建单个日志(log)文件?

Django基于查询集动态筛选字段名称

Django rest框架:自定义对象权限不起作用

Pymongo:搜索文档时忽略空输入值

使用django提交后如何保留html表单数据?

在 python 视图中检测移动浏览器

将计数字段添加到 django rest 框架序列化程序

在生产中使用 Django 中的 SQLite?

如何将 Django forms.ChoiceField 呈现为 Twitter Bootstrap 下拉菜单

Apache + mod_wsgi 与 nginx + gunicorn

Django 1.9 中 django.db.models.loading.get_model() 的类似功能是什么?

如何使用 django 发送 POST 请求?

在 django 模板中访问元组

有 Django List View 模型排序吗?

OrderingFilter 没有属性filter_queryset

Django urls 直接到 html 模板

找不到 msguniq.确保您安装了 GNU gettext 工具 0.15 或更新版本. (Django 1.8 和 OSX ElCapitan)

运行单元测试时禁用 Django South?