【问题标题】:how to format time in django-rest-framework's serializer?如何在 django-rest-framework 序列化程序中格式化时间?
【发布时间】:2016-03-11 19:39:39
【问题描述】:

这是我的序列化程序代码:
serializer.py

class StartListSerializer(serializers.Serializer):
    id = serializer.CharField()
    time = serializers.DateField(fromat=None, input_formats=None) 

它会给我这个:
'time': '2014-03-14T22:44:16.923000'
输入时间格式为datetime.datetime(2014, 3, 14, 22, 44, 37, 280000)
但我想得到这样的时间2014-03-14 22:44:37
如何更改我的序列化程序以获取这个时间?

【问题讨论】:

    标签: django serialization django-rest-framework


    【解决方案1】:

    通常的 Python 日期时间格式可以使用:

    # for DateField
    date = serializers.DateField(format="%Y-%m-%d")
    
    # for DateTimeField
    time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
    

    【讨论】:

    • 这个答案给出了日期时间字段的错误。检查下面的@Flippym 答案。
    • 格式在最近的版本中可能有所改变。我有serializers.DateField(format='YYYY-MM-DD')
    【解决方案2】:

    测试接受的答案后,我收到以下错误:

    AssertionError:应为date,但得到datetime。拒绝强制,因为这可能意味着丢失时区信息。使用自定义只读字段并明确处理时区问题。

    使用序列化器字段作为datetime 解决了这个问题。

    class StartListSerializer(serializers.Serializer):
    
        # ...
        time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-18
      • 2017-06-04
      • 2015-07-24
      • 2021-04-19
      • 2020-11-17
      相关资源
      最近更新 更多