【发布时间】:2019-08-31 13:05:11
【问题描述】:
我的模型中有一个 JSONField,当我尝试在 django 管理页面的 json 中将 0 保存为值时,它会将值保存为 null。如何将零保存为值? Django 版本:2.1.7
Django 管理页面:
我的 JSON 字段:
lecturer_scores = JSONField(
verbose_name=_("Lecturer Score"),
validators=[validate_lecturer_score],
default=dict,
blank=True
)
我的意见:
{
"score 1": 0,
"score 2": 5
}
它保存如下:
{
"score 1": null,
"score 2": 5
}
验证器:
from django.core.validators import validate_integer
from django.core.exceptions import ValidationError
def validate_lecturer_score(value):
for k, v in value.items():
if v:
validate_integer(v)
for value in value.values():
if value:
if value < 0 or value > 100:
raise ValidationError(_("Lecturer score for user's participance rate calculation should be between 0 and 100."))
【问题讨论】:
-
你的
validate_lecturer_score是什么我复制了你的代码,除了验证器。并且该字段保存为0而不是null。 -
你的数据库是什么?我无法使用 postgres 重现它imgur.com/a/ETBZVHF
-
我的数据库是PostgreSQL
-
@BearBrown 问题出现在我的信号中,我调用了一个属性方法并设置了值。我检查值是否为空,将其设置为空。像这样
lecturer_scores[key] = self.lecturer_scores.get(key) or None -
请为其他将搜索相同问题的人写下答案。
标签: python django postgresql model django-jsonfield