设置django rest框架配置的DatetimeField格式

Bur*_*ing 10 python django serialization python-2.7 django-rest-framework

我尝试使用DRF序列化程序来序列化模型对象.我发现对象中的DatetimeField不会输出"2015-10-21T09:28:53.769000Z"ISO-8601格式

我查找DRF文档为什么我不能输出ISO-8601格式.据datetimefield说:

format - 表示输出格式的字符串.如果未指定,则默认为与DATETIME_FORMAT设置键相同的值,除非设置,否则将为"iso-8601".设置为格式字符串表示to_representation返回值应强制转换为字符串输出.格式字符串如下所述.将此值设置为None表示Python

这意味着iso-8601如果我从未设置DATETIME_FORMAT参数,那么输出格式是默认的吗?还没有,它仍然没有变化.

当我尝试编写django项目的设置如下:

REST_FRAMEWORK = {
    'DATETIME_FORMAT': "iso-8601",
}
Run Code Online (Sandbox Code Playgroud)

或者我在DatetimeField参数中写入如下:

class UserSerializer(...):
    last_login = DatetimeField(format='iso-8601')
    class Meta:
        model = User
        fields = ('email', 'displayname', 'is_active',
                  'date_joined', 'last_login')
Run Code Online (Sandbox Code Playgroud)

它仍然没有变化.

有谁知道怎么设置它?

小智 22

如果你不知道发生了什么,你仍然不解决这个问题,我可以在设置中定义一个datettime格式如下:

REST_FRAMEWORK = {
    'DATETIME_FORMAT': "%Y-%m-%dT%H:%M:%S.%fZ",
}
Run Code Online (Sandbox Code Playgroud)

  • 仅当您的服务器 TIME_ZONE 配置位于 UCT 中时,此功能才有效。Z 表示该时间是 UTC,并且您在格式末尾强制添加“Z”。如果要正确指示位置必须设置 %Z 或 %z。 (2认同)