使用django 1.4我有一个带有datetimefield的模型。我导入了django.utils.timezone作为默认值。
from django.utils import timezone
date = models.DateTimeField(default=timezone.now)
然而,我仍然收到有关DateTimeField收到天真日期的警告。 我已将USE_TZ设置为true,因此应返回知晓日期时间
答案 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
分别为True
或False
的时间点。
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}}。尝试缩小何时更准确地触发警告。