Django rest框架datetime字段格式



我使用这个字段:

ordered_date = serializers.DateTimeField(format="iso-8601", required=False, read_only=True)

当我转到rest url时,我得到time:

"ordered_date": "2015-10-22T19:50:08"

但是当我序列化日期然后用GCM推送发送它时,它会增加毫秒(2015-10-22T19:53:43.777171),我怎么能解决这个问题,我只需要一种格式来使用,而不是与这两种格式混合使用。

我怎么能解决这个问题?

您可以为ordered_date字段指定一个format参数,其value为表示输出格式的字符串。

ordered_date = serializers.DateTimeField(format="%Y-%m-%dT%H:%M:%S", required=False, read_only=True)
例如

:

In [1]: from rest_framework import  serializers
In [2]: from datetime import datetime
In [3]: class XYZSerializer(serializers.Serializer): # define a serializer with a datetime field
   ...:     ordered_date = serializers.DateTimeField(format="%Y-%m-%dT%H:%M:%S")
   ...:    
In [4]: x = XYZSerializer(data={'ordered_date':datetime.now()})
In [5]: x.is_valid()
Out[5]: True
In [6]: x.data # contains the datetime field in the desired format
Out[6]: OrderedDict([('ordered_date', '2015-10-22T18:17:51')])

感谢@Red-Tune-84的评论我自定义了所有datetime字段的格式。

REST_FRAMEWORK = {
    'DATETIME_FORMAT': "%Y-%m-%d %H:%M:%S",
    ....
}

最新更新