django.utils.timezone返回天真的约会?

时间:2012-04-06 05:55:13

标签: django timezone

使用django 1.4我有一个带有datetimefield的模型。我导入了django.utils.timezone作为默认值。

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

然而,我仍然收到有关DateTimeField收到天真日期的警告。 我已将USE_TZ设置为true,因此应返回知晓日期时间

4 个答案:

答案 0 :(得分:2)

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

 date = models.DateTimeField(default=timezone.now, null=True)

答案 1 :(得分:0)

在我的情况下,我在运行测试时一直收到问题。这是因为过去的迁移错误地使用了datetime而不是timezone。我在导致警告的那个之前恢复了迁移,删除了它,再次运行makemigrations。这解决了我的问题。

答案 2 :(得分:-1)

  

now()

     

返回表示当前的有意识或天真的日期时间   USE_TZ分别为TrueFalse的时间点。

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

答案 3 :(得分:-1)

我知道这是解决问题的一步,但您是否已尝试auto_now_add=True在您的领域?无需使用default即可。

另一方面,如果确实USE_TZ=True,您的也应该正常工作。

我说它确实有用,你可以从直接设置RunTimeWarning字段的地方获取date,而不是默认设置。{1}}。尝试缩小何时更准确地触发警告。