Django JSONField не сохраняет значение 0

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

Страница администратора Джанго:

введите здесь описание изображения

мой 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
}

Валидатор:

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

person Aliasghar Soltani    schedule 10.04.2019    source источник
comment
какой у вас validate_lecturer_score я воспроизвел ваш код кроме валидатора. И поле сохранено как 0, а не null.   -  person Brown Bear    schedule 10.04.2019
comment
какая у вас база данных? я не могу воспроизвести его с помощью postgres imgur.com/a/ETBZVHF   -  person Brown Bear    schedule 10.04.2019
comment
моя база данных PostgreSQL   -  person Aliasghar Soltani    schedule 10.04.2019
comment
во вводе вы заменяете null на ноль и после сохранения в базе данных вы получаете null? Вы можете добавить print в свой валидатор?   -  person Brown Bear    schedule 10.04.2019
comment
в валидаторе я получаю 0, но в БД он сохраняет ноль   -  person Aliasghar Soltani    schedule 10.04.2019
comment
магия!) сигналы django или триггеры базы данных, может быть, метод сохранения?   -  person Brown Bear    schedule 10.04.2019
comment
У вас есть где-нибудь петли, подобные двум, показанным выше, с if value: внутри?   -  person Ivan Starostin    schedule 10.04.2019
comment
Проблема @BearBrown была в моем сигнале, я вызываю метод свойства и устанавливаю значения. Я проверяю, пусто ли значение, устанавливая его как нуль. что-то вроде этого lecturer_scores[key] = self.lecturer_scores.get(key) or None   -  person Aliasghar Soltani    schedule 10.04.2019
comment
пожалуйста, напишите ответ для других, кто будет искать ту же проблему.   -  person Brown Bear    schedule 10.04.2019


Ответы (1)


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

person Aliasghar Soltani    schedule 10.04.2019