Python 带有时区信息的Django DateTime字段

Python 带有时区信息的Django DateTime字段,python,django,postgresql,datetime,timezone,Python,Django,Postgresql,Datetime,Timezone,我有一个Django模型,带有DateTimeField,后端是postgres 9.3数据库 measure_datetime = models.DateTimeField() 在我的数据库中,这样创建了一个列 ALTER TABLE geoudis_weathermeasurements ADD COLUMN measure_datetime timestamp with time zone; 类型 timestamp with time zone 如您所见,它将日期时间与时区一起存储

我有一个Django模型,带有DateTimeField,后端是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中设置使用_TZ=False,我会得到想要的结果。
在我看来,这种行为是django的意图

我根本不知道Django,但我可以告诉你,如果你不知道数据是在哪个时区(UTC偏移量)测量的,那么你就不知道时间

以下是您的选择:

  • 确保仅使用UTC(或一个UTC偏移量)。这是最好的,但你不能总是选择你得到什么
  • 仅使用本地时间。这真的很麻烦(计算机更改位置、用户更改时区设置、夏令时开关等等)