【问题标题】:Django DateTime serializingDjango DateTime 序列化
【发布时间】:2019-08-08 05:10:17
【问题描述】:

我得到了我的 DateTimeField 的一个奇怪的序列化表示,在表示结束时我在 JSON 上得到一个“-05:00”。

在我的模型中,该字段定义为:

ultima_actualizacion = models.DateTimeField(auto_now=True)

在序列化程序中,我在Meta Class 中得到了它:

class Meta:
    fields = (
        ...
        'ultima_actualizacion',
        ...
         )

但是当我在响应 JSON 中发出请求时,我会得到如下信息:

 {
 ...
 "ultima_actualizacion": "2019-08-07T15:34:22.692530-05:00"
 }

这看起来很奇怪,因为我没有更改格式并且仍然在每个 ultima_actualizacion

中得到那个“-05:00

我已经查看并尝试更改格式和输入格式,如:Django Rest Framework Fields 和另一个 answer 但仍然得到“-05:00

【问题讨论】:

  • -5:00 是配置服务器的时区设置

标签: python django django-rest-framework


【解决方案1】:

Django 的DateTimeField 是一个区域感知对象,这意味着:它将时区信息存储在日期对象中。

-5:00 是您服务器的时区设置。

如果您不希望这种情况发生,请将您的项目设置配置为使用 UTC 时区,方法是将其添加到 settings.py

TIME_ZONE = 'UTC'

编辑:

按照 ipaleka 的建议,您可以通过将 USE_TZ = False 添加到 settings.py 来完全禁用时区。

【讨论】:

  • 这种情况其实应该设置USE_TZ = False
  • @ipaleka 感谢您的通知,我根据您的建议更新了我的答案。
  • 工作就像一个魅力谢谢你,只是一个简单的问题,'UTC'代表什么?
猜你喜欢
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
相关资源
最近更新 更多