Джанго: как разрешить нулевое значение - PullRequest
0 голосов
/ 07 июня 2019

У меня есть следующая модель Django:

from django.db import models
class AlertCalendar(models.Model):
    alert_calendar_id = models.UUIDField(primary_key=True, default=uuid.uuid4, blank=True, editable=False)
    start_time = models.TimeField(null=True, blank=True)
    end_time = models.TimeField(null=True, blank=True)
    start_date = models.DateField(null=True, blank=True)
    end_date = models.DateField(null=True, blank=True)

Я хочу создать экземпляр этой модели, где все поля, кроме идентификатора, установлены на null, но когда я пытаюсь это сделатьЯ получаю следующую ошибку:

{
    "start_time": [
        "This field may not be null."
    ],
    "end_time": [
        "This field may not be null."
    ],
    "start_date": [
        "This field may not be null."
    ],
    "end_date": [
        "This field may not be null."
    ]
}

это также тот случай, когда только одно из этих значений установлено на null, но я определил поля, используя null=True и blank=True, так почемуя не могу создать этот экземпляр?

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Назначьте None каждому полю для создания экземпляра с нулевым значением.

AlertCalendar.objects.create(start_time = None, end_time = None, start_date = None, end_date = None) 

Это создаст экземпляр с указанными полями как null

0 голосов
/ 05 июля 2019

Как убедил @Daniel Roseman, ответ об ошибке поступил от сериализатора. Класс сериализатора должен быть что-то вроде

class AlertCalendarSerializer(serializers.ModelSerializer):
    start_time = serializers.TimeField(required=False)
    end_time = serializers.TimeField(required=False)
    start_date = serializers.DateField(required=False)
    end_date = serializers.DateField(required=False)

Это решит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...