私のプロジェクトはもともと 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 タイムゾーンを使用する認識された datetime オブジェクトであり、これで問題ありません。しかし、データベースに保存された値はそのまま取られ、UTC と見なされたようですが、IST タイムゾーンにありました。そして、これは私の比較を壊します!
新しいデータの場合、データベースに保存する前に UTC に変換されるため、これはうまく機能します。しかし、古いデータはどうですか?
実際にすべてのデータをローカルから UTC に変換する必要がありますか?? 存在するモデルの数を考えると、それは大変な作業になります。他に何かできることがあれば提案してください。