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

问题描述 投票:7回答:4

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

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

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

django timezone
4个回答
2
投票

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

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

0
投票

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


-1
投票

now()

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

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


-1
投票

我知道这是侧面的问题,但你在你的领域尝试过auto_now_add=True吗?无需使用default即可。

另一方面,如果你确实有USE_TZ=True,你的版本应该也可以。

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

© www.soinside.com 2019 - 2024. All rights reserved.