7

使用 django 1.4 我有一个带有日期时间字段的模型。我导入了 django.utils.timezone 以用作默认值。

from django.utils import timezone
date = models.DateTimeField(default=timezone.now)

但是我仍然收到有关 DateTimeField 收到天真的日期的警告。我已将 USE_TZ 设置为 true,因此它应该返回有意识的日期时间

4

4 回答 4

2

djangos 输入一个默认的日期值,它不知道 tz,因为默认情况下该字段不可为空。将 null 设置为 true 意味着它只会将日期设置为 NULL ,因此不会引发警告:

 date = models.DateTimeField(default=timezone.now, null=True)
于 2012-04-07T00:43:25.250 回答
0

就我而言,我在运行测试时不断收到问题。这是因为过去的迁移错误地使用了日期时间而不是时区。我恢复到导致警告之前的迁移,删除它,再次运行 makemigrations。这为我解决了这个问题。

于 2017-12-31T14:48:52.980 回答
-1

now()

USE_TZ返回一个有意识的True或幼稚的日期时间,分别表示当前时间点False

https://docs.djangoproject.com/en/dev/ref/utils/#django.utils.timezone.now

于 2012-04-06T05:57:50.870 回答
-1

我知道这是在回避问题,但您是否尝试过auto_now_add=True您的领域?无需default用于您想要的。

另一方面,如果您确实USE_TZ=True.

我会说它确实有效,并且您RunTimeWarning从直接设置字段的地方date而不是从默认值中获取。尝试缩小何时更准确地触发警告。

于 2012-04-06T16:55:55.450 回答