使用django 1.4我有一个带有datetimefield的模型。我导入了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)
在我的情况下,我在运行测试时一直收到问题。这是因为过去的迁移错误地使用了datetime而不是timezone。我在导致警告的那个之前恢复了迁移,删除了它,再次运行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
而不是默认设置。尝试缩小何时更准确地触发警告。