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 タイムゾーンを使用する認識された datetime オブジェクトであり、これで問題ありません。しかし、データベースに保存された値はそのまま取られ、UTC と見なされたようですが、IST タイムゾーンにありました。そして、これは私の比較を壊します!

新しいデータの場合、データベースに保存する前に UTC に変換されるため、これはうまく機能します。しかし、古いデータはどうですか?

実際にすべてのデータをローカルから UTC に変換する必要がありますか?? 存在するモデルの数を考えると、それは大変な作業になります。他に何かできることがあれば提案してください。

4

0 に答える 0