1

我的项目最初在 Django 1.3 上,现在我将其迁移到 Django 1.4。

#models.py
class my_model(models.Model):
    traveldate = models.DateTimeField(null=False,db_index=True,blank=True)

设置文件:

TIME_ZONE = 'Asia/Kolkata'
USE_TZ = True

说 item 是 my_model 的一个实例。然后在 Django 1.3 中,

>>> item.traveldate
>>> datetime.datetime(2012, 7, 27, 8, 35)
>>> datetime.datetime.now()
>>> datetime.datetime(2013, 7, 23, 16, 1, 32, 371116)

item.traveldate存储在数据库中的datetime.datetime.now()都是本地时间和时区感知的日期时间对象,所以我们可以很好地比较它们。

但现在,

>>> item.traveldate
>>> datetime.datetime(2012, 7, 27, 8, 35, tzinfo=<UTC>)
>>> timezone.now()
>>> datetime.datetime(2013, 7, 23, 10, 32, 57, 609166, tzinfo=<UTC>)

timezone.now()是一个具有 UTC 时区的感知日期时间对象,这很好。但是存储在数据库中的值似乎已被原样采用并被视为 utc,而它位于 IST 时区。这打破了我的比较!

对于新数据,这可以正常工作,因为它将在保存到数据库之前转换为 UTC。但是旧数据呢?

我真的需要将所有数据从本地转换为 UTC 吗?鉴于现有模型的数量,这将是很多工作。请建议是否可以做其他任何事情。

4

0 回答 0