Django Rest Framework给出“日期时间格式错误”

trp*_*him 5 python django django-rest-framework

我有一个模型和一个使用 DRF 的序列化程序。使用下面的代码,当通过 ajax 提交所有字段为空的表单时,我收到错误消息description“此字段不能为空”,这正是我想要的。但是对于日期时间字段,我得到“日期时间格式错误”。为什么日期时间字段也不给我“此字段不能为空”?它在评估它是否有值之前进行格式验证。根据文档,Required默认情况下应为 true,并且模型也需要它。

我怎样才能让它简单地说“这个字段不能为空”或类似的东西?现在我正在通过在调用序列化程序的视图中进行验证来解决它。

class RoomEventSerializer(serializers.ModelSerializer):
    start_datetime = serializers.DateTimeField(input_formats=(['%m/%d/%Y %I:%M %p', 'iso-8601']))
    end_datetime = serializers.DateTimeField(input_formats=(['%m/%d/%Y %I:%M %p', 'iso-8601']))

    class Meta:
        model = RoomEvent
        fields = ('start_datetime', 'end_datetime', 'description', 'room', 'start_hour', 'start_min', 'start_ampm', 'end_hour', 'end_min', 'end_ampm', 'requesting_user', 'type', 'approval_status')

    def validate(self, data):
        if data['start_datetime'] >= data['end_datetime']:
            raise serializers.ValidationError('Start date must be prior to end date.')
        return data

class RoomEvent(models.Model):
    description = models.CharField(max_length=250)
    start_datetime = models.DateTimeField()
    end_datetime = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)

duk*_*ody 3

您使用的是哪个 django-rest-framework 版本?我认为这是一个已解决的错误DateField。请参阅https://github.com/tomchristie/django-rest-framework/issues/2687