我的项目最初是在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
Say 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?考虑到模型的数量,这将是很多工作。 请告知是否还有其他事情可以做。