【发布时间】:2016-01-21 12:37:27
【问题描述】:
我尝试使用 DRF 序列化程序来序列化模型对象。我发现对象中的 DatetimeField 不会输出 ISO-8601 格式的"2015-10-21T09:28:53.769000Z"
我查找 DRF 文档为什么我不能输出 ISO-8601 格式。据datetimefield说:
format- 表示输出格式的字符串。如果未指定,则默认为与 DATETIME_FORMAT 设置键相同的值,除非设置,否则将为“iso-8601”。设置为格式字符串表示 to_representation 返回值应强制转换为字符串输出。格式字符串如下所述。将此值设置为 None 表示 Python
这意味着如果我从未设置DATETIME_FORMAT参数,则默认输出iso-8601格式?还没有,还是没有变化。
当我尝试编写 django 项目的设置如下:
REST_FRAMEWORK = {
'DATETIME_FORMAT': "iso-8601",
}
或者我在 DatetimeField 参数中写如下:
class UserSerializer(...):
last_login = DatetimeField(format='iso-8601')
class Meta:
model = User
fields = ('email', 'displayname', 'is_active',
'date_joined', 'last_login')
还是没有变化。
有人知道怎么设置吗?
【问题讨论】:
-
DatetimeField in object won't output "..." of the ISO-8601 format它输出什么? -
我也面临同样的问题!如果我使用此字段的验证数据,它会输出类似“2018-01-12 10:20:55”的内容(这可能是日期时间对象的默认表示?)。我对文档的理解是输出应该是“2018-01-12T10:20:55+00:00”。我现在在 valid_data 上调用 isoformat() 以获得正确的格式,但我一定错过了一些东西......
标签: python django python-2.7 serialization django-rest-framework