我正在发布这样一个休息请求:
{title:some title, recurring:true, day:Wednesday, time:12:30, description:some text}
我不传递日期,因为事件是重复发生的,且值应为空。服务器响应为:
{"date": ["This field cannot be blank."]}
下面是相关的python代码:
class Event(models.Model):
title = models.CharField(max_length=200)
recurring = models.BooleanField()
day = models.CharField(max_length=20, blank=True)
date = models.DateField(null=True)
time = models.TimeField()
description = models.CharField(max_length=500)
venue = models.CharField(max_length=200, blank=True)
venueAddress = models.CharField(max_length=200, blank=True)
venueCity = models.CharField(max_length=200, blank=True)
class EventSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Event
class EventViewSet(viewsets.ModelViewSet):
queryset = Event.objects.all()
serializer_class = EventSerializer
我不完全确定这条信息是从哪里来的。我的模型定义正确吗?我的序列化程序需要额外的工作吗?
看起来您使用的库反过来使用django.forms.ModelForm。
如果是这种情况,可以将blank=True添加到DateField以解决问题。
第一步是更改字段描述,如下所示:
null=True
是不够的,因为这只是一个与表创建相关的指令,而不是与验证相关的指令。null
和blank
是分开的概念,因为在某些情况下,您只需要一个而不需要另一个。顺便说一下,在几乎所有的情况下,一个
date
和一个time
字段可以压缩成一个DateTimeField
。如果希望
date
字段是可选的,请将blank=True
参数添加到该字段的定义中。从docs:
相关问题 更多 >
编程相关推荐