使用 django 1.4 我有一个带有日期时间字段的模型。我导入了 django.utils.timezone 以用作默认值。
from django.utils import timezone
date = models.DateTimeField(default=timezone.now)
但是我仍然收到有关 DateTimeField 收到天真的日期的警告。我已将 USE_TZ 设置为 true,因此它应该返回有意识的日期时间
djangos 输入一个默认的日期值,它不知道 tz,因为默认情况下该字段不可为空。将 null 设置为 true 意味着它只会将日期设置为 NULL ,因此不会引发警告:
date = models.DateTimeField(default=timezone.now, null=True)
就我而言,我在运行测试时不断收到问题。这是因为过去的迁移错误地使用了日期时间而不是时区。我恢复到导致警告之前的迁移,删除它,再次运行 makemigrations。这为我解决了这个问题。
now()
USE_TZ
返回一个有意识的True
或幼稚的日期时间,分别表示当前时间点False
。
https://docs.djangoproject.com/en/dev/ref/utils/#django.utils.timezone.now
我知道这是在回避问题,但您是否尝试过auto_now_add=True
您的领域?无需default
用于您想要的。
另一方面,如果您确实有USE_TZ=True
.
我会说它确实有效,并且您RunTimeWarning
从直接设置字段的地方date
而不是从默认值中获取。尝试缩小何时更准确地触发警告。