2013-07-10 173 views
2

我想將DateTimeField添加到我的django模型中,並將最大時間戳作爲默認值。我已經發現,Django中的最大時間戳是9999/12/31 23:59:59,與postgres DB中使用的最大時間戳不同。當使用此時間戳作爲字段的默認值時,我得到一個OverflowError: date value out of range錯誤。因此,我嘗試同樣與9999/01/01 00:00:00像這樣:Django時區感知DateTimeField默認值時區感知錯誤

start_time = models.DateTimeField(null=False, default=datetime.datetime(9999,01,01,00,00,00,tzinfo=utc))

現在,當我將此向南遷移到數據庫中,我得到以下異常:

RuntimeWarning: DateTimeField received a naive datetime (9999-01-01 00:00:00) while time zone support is active.

查看數據庫時,我看到我的本地時區已應用於默認值:9999-01-01 00:00:00+01這使我得出結論,即django忽略了時區意識,但我不知道爲什麼可能。

附加信息:

的Django TIME_ZONE設置爲「歐洲/柏林

USE_TZ是真

任何幫助表示讚賞。

回答

4

嘗試在日期時間中調用replace,而不是將tzinfo傳入日期時間的__init__。取自django docs:

import datetime 
from django.utils.timezone import utc 

now = datetime.datetime(9999, 1, 1).replace(tzinfo=utc) 
+0

我以爲我以前試過,但這實際上是做了tric。謝謝。 – Tim