Django Rest Framework如何发布日期字段

时间:2018-11-22 15:26:31

标签: django django-rest-framework

我要发布带有字段date的JSON请求:

{
    "date":"2015-02-11T00:00:00.000Z"
}

这是从Date对象自动转换的字符串,我不想在前端手动裁剪部分T00:00:00.000Z

但是,如果我发布了这样的请求,则DateField的Django Rest Framework验证程序会告诉我,该日期的格式无效。

我的模特:

class Event(models.Model):
    name = models.CharField('Name', max_length=40, blank=True, null=True)
    date = models.DateField('Date', blank=True, null=True)

我的序列化器:

class EventSerializer(serializers.ModelSerializer):
    class Meta:
        model = Event
        fields = ('id', 'name', 'date')

解决此问题的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用其他格式(不同于默认使用的默认格式)修改序列化程序中的日期字段。

更多信息:

https://www.django-rest-framework.org/api-guide/fields/#datefield

https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

TERRAFORM_CFG_TLS_CERT: "-----BEGIN CERTIFICATE----\nMIIIqzCCB5O"

请注意,如果您需要解析非UTC的时间戳(时间戳末尾为Z),则需要多自定义from rest_framework import serializers, fields class EventSerializer(serializers.ModelSerializer): date = fields.DateField(input_formats=['%Y-%m-%dT%H:%M:%S.%fZ']) class Meta: model = Event fields = ('id', 'name', 'date')

正如注释中的@nitrovatter一样,日期输入格式也可以在设置中配置为默认情况下影响每个序列化程序。例如:

DateField