我正在尝试将DateTimeField添加到我的django模型中,并将最大时间戳作为默认值。我已经发现,Django的最大时间戳是9999/12/31 23:59:59,与我的postgres DB中使用的最大时间戳不同。使用此时间戳作为字段的默认值时,出现OverflowError: date value out of range
错误。因此我在9999/01/01 00:00:00尝试了同样的事情:
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设置为'Europe / Berlin'
USE_TZ为真
感谢任何帮助。
答案 0 :(得分:4)
尝试在日期时间调用replace
,而不是将tzinfo传递到日期时间的__init__
。取自django docs:
import datetime
from django.utils.timezone import utc
now = datetime.datetime(9999, 1, 1).replace(tzinfo=utc)