Django JSONField не сохраняет значение 0 - PullRequest
5 голосов
/ 10 апреля 2019

В моей модели есть JSONField, когда я пытаюсь сохранить 0 как значение в json на странице администратора django, он сохраняет значение как ноль. Как я могу сохранить ноль в качестве значения? Версия Django: 2.1.7

Страница администратора Django:

enter image description here

мой JSONField:

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
}

Validator:

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."))

1 Ответ

1 голос
/ 10 апреля 2019

проблема была в моем сигнале, я вызываю метод свойства и устанавливаю значения.Я проверяю, является ли значение пустым, установите его как ноль.как то так lecturer_scores[key] = self.lecturer_scores.get(key) or None

...