Django:如何允许空值

时间:2019-06-07 15:05:45

标签: django

我有以下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)

我想创建一个该模型的实例,其中除id外的所有字段都设置为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=Trueblank=True定义了字段,所以为什么不能创建此字段实例?

2 个答案:

答案 0 :(得分:1)

None分配给每个字段以创建具有空值的实例。

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

这将创建一个实例,其指定字段为null

答案 1 :(得分:0)

@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)

这将解决。