Django rest框架DateField格式

Posted

技术标签:

【中文标题】Django rest框架DateField格式【英文标题】:Django rest framework DateField format 【发布时间】:2018-07-04 19:23:19 【问题描述】:

我有包含 DateField 的 drf 模型。该字段默认格式是“YYYY-MM-DD”只是我想转换“DD-MM-YYYY”怎么可能。

models.py

class Reminder(BaseModel):
    content = models.TextField()
    schedule_date = models.DateField()
    schedule_time = models.TimeField()
    is_release = models.BooleanField(default=True)

serializer.py

class ReminderSerializer(HyperlinkedModelSerializer):
    schedule_date = serializers.DateField(format="%d-%m-%Y")
    class Meta:
        model = Reminder
        fields = ('id','content','created_at','schedule_date','schedule_time','user_id','is_release','is_deleted',)

在 serializer.py 中,我只给出格式,但该格式仅在列表页面中转换。如您所见,列表没问题,但 POST 操作字段未转换。 API please look at image

【问题讨论】:

【参考方案1】:

你可以看看DRF's docs on this。基本上format 只处理输出,但对于输入,您需要包含input_formats - 对于您的情况,您可以使用schedule_date = serializers.DateField(format="%d-%m-%Y", input_formats=['%d-%m-%Y', 'iso-8601'])

是否要保留 iso-8601 由您决定。

【讨论】:

以上是关于Django rest框架DateField格式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django DateField 中仅保留日期部分

使 Django forms.DateField 显示使用本地日期格式

Django rest框架:如何全局更改错误响应格式

15-Django开发REST接口

django rest框架列表查询自定义json数组结果响应,因为日期格式

Django Rest返回绝对URL