我的项目最初在 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 吗?鉴于现有模型的数量,这将是很多工作。请建议是否可以做其他任何事情。