w--*_*w-- 5 python django django-models django-admin django-jsonfield
在我的模型定义中
from django.contrib.postgres.fields import JSONField
.....
.......
.........
media_data=JSONField(default=dict)
Run Code Online (Sandbox Code Playgroud)
我创建了一个默认管理员
当我尝试保存而不接触该字段时,出现this field is required错误。
它看起来像一个表单验证问题,因为我可以以编程方式从代码中保存模型实例而不会出现问题。
为什么会这样呢?
我错过了一些愚蠢的事情吗?
ban*_*988 20
1) form.is_valid()
->form.full_clean()
-->form._clean_fields()
---> self.cleand_data[name] = field.clean(value)
2) field.clean(value)
-> self.to_python(value)
-> self.validate(value)
Run Code Online (Sandbox Code Playgroud)
当查看源代码时,您会发现,主要是因为empty_values检查。
# These values, if given to validate(), will trigger the self.required check.
EMPTY_VALUES = (None, '', [], (), {})
Run Code Online (Sandbox Code Playgroud)
如您所见,空字典{}是 JSONField 的空值。所以它会引发错误。
表格.py
1) form.is_valid()
->form.full_clean()
-->form._clean_fields()
---> self.cleand_data[name] = field.clean(value)
2) field.clean(value)
-> self.to_python(value)
-> self.validate(value)
Run Code Online (Sandbox Code Playgroud)
数据库/字段.py
# These values, if given to validate(), will trigger the self.required check.
EMPTY_VALUES = (None, '', [], (), {})
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题。我是怎么解决的?为了绕过排除{}有效 json 的验证过程,我添加了blank=True和null=True。例如:models.JSONField(blank=True, null=True, default=dict)
| 归档时间: |
|
| 查看次数: |
569 次 |
| 最近记录: |