【发布时间】:2014-12-31 12:13:39
【问题描述】:
我有一个带有 DateTimeField 的 Django 模型,后端有一个 postgres 9.3 数据库。
measure_datetime = models.DateTimeField()
在我的数据库中,这创建了一个这样的列
ALTER TABLE geoudis_weathermeasurements ADD COLUMN measure_datetime timestamp with time zone;
类型
timestamp with time zone
如您所见,它将日期时间与时区一起存储。我用不同的工具插入了数据。当我做这样一个简单的查询时
SELECT measure_datetime from geoudis_weathermeasurements where "id" = 44525
"2014-10-01 00:04:54+02"
这看起来不错。现在我从 Django 中查询数据,这将为同一行返回一个具有 UTC 时区的 Datetime 对象
2014-09-30 22:04:54+00:00
tzinfo=UTC
_utcoffset=0:00:00
所以看起来原来的时区信息已经消失了。当然我可以将它设置为不同的时区,但如果我不知道数据是在哪个时区测量的怎么办?显示数据的服务器可以在不同的时区。因此,我认为这种 postgres 数据类型(带时间戳的时区)非常适合。
我在这里做错了吗?感谢您提供任何帮助或建议。
编辑1:
如果我在 settings.py 中设置 USE_TZ = False 我会得到我想要的结果。 在我看来,这种行为是 django 有意的。
【问题讨论】:
标签: python django postgresql datetime timezone