Tim*_*Tim 4 django django-models timestamp-with-timezone
我正在尝试将 DateTimeField 添加到我的 django 模型中,并以最大时间戳作为默认值。我已经弄清楚,Django 中的最大时间戳是 9999/12/31 23:59:59,与我的 postgres 数据库中使用的最大时间戳不同。当使用此时间戳作为字段的默认值时,我收到错误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 设置为“欧洲/柏林”
USE_TZ 为 True
任何帮助表示赞赏。
尝试调用replace日期时间,而不是将 tzinfo 传递到__init__日期时间。摘自django 文档:
import datetime
from django.utils.timezone import utc
now = datetime.datetime(9999, 1, 1).replace(tzinfo=utc)
Run Code Online (Sandbox Code Playgroud)