【问题标题】:How do I set the output format for django rest framework datefield如何设置 django rest 框架日期字段的输出格式
【发布时间】:2019-06-25 21:55:31
【问题描述】:

我有以下非常简单的序列化程序:

from rest_framework import serializers

class EmailSendSerializer(serializers.Serializer):
    date = serializers.DateField(format='%B')

我对文档的理解https://www.django-rest-framework.org/api-guide/fields/#datefield 是序列化程序返回的验证日期应该是月份的全名(由 %B 指定),但我得到的是一个普通的日期对象。

我可以找到很多关于更改日期字段的 input_format 的 SO 参考,但没有任何参考输出日期。

例如,对于 date= {str} '2020-12-25' 的序列化程序的输入,我希望得到“December”的结果,但我得到 {date} 2020-12-25。

如何正确使用format参数返回我想要的日期格式?

谢谢

【问题讨论】:

  • 你能用序列化器显示你正在使用的数据吗?
  • 我尝试重新创建问题,但我得到了正确的答案。这是我的Screenshot
  • 谢谢,我会仔细检查我的数据,但我当然认为它看起来像你的例子
  • 好的,我发现了这个问题。 s.validated_data.date = "2020-12-25" 但是 s.data.date="December"。我期待在 valid_data 属性下看到格式化的日期

标签: django-rest-framework datefield


【解决方案1】:

似乎格式化数据将保存为 serializer.data 属性的属性。

所以使用上面定义的序列化器:

data = {"date":"2020-12-25"}
serializer = EmailSendSerializer(data=data)
serializer.is_valid() # True
print(s.data.date) # December
print(s.validated_data.date) # "2020-12-25"

【讨论】:

    猜你喜欢
    • 2016-01-22
    • 2018-05-07
    • 2016-01-21
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 2021-07-01
    • 2022-01-23
    • 2018-07-04
    相关资源
    最近更新 更多