django.utils.timezone返回天真日期?
使用Django 1.4我有一个DateTimeField字段的模型。我导入了django.utils.timezone作为默认值。django.utils.timezone返回天真日期?
from django.utils import timezone
date = models.DateTimeField(default=timezone.now)
但是我仍然收到有关DateTimeField收到天真日期的警告。 我已经设置USE_TZ为true,所以它应该返回知道日期时间
Django的投入默认日期值未TZ知道,因为在默认情况下未启用场可为空。设置为null为true意味着它只是设置的日期,而不是空,因此警告心不是提出:
date = models.DateTimeField(default=timezone.now, null=True)
now()
返回表示当前时间点 时
USE_TZ
是True
或False
分别感知或天真的日期时间。
https://docs.djangoproject.com/en/dev/ref/utils/#django.utils.timezone.now
我已经将USE_TZ设置为true,所以它应该返回意识日期时间 – mobiletim 2012-04-06 06:23:13
我知道这是侧步的问题,但你在你的领域尝试auto_now_add=True
呢?无需使用default
你想要的东西。
另一方面,您的版本应该工作以及如果你确实USE_TZ=True
。
我想说它可以工作,并且您从某处直接设置date
字段而不是从默认设置中获得RunTimeWarning
。尝试缩小什么时候更准确地触发警告。
就我而言,我一直接受这个问题,当我跑测试。这是因为过去的迁移错误地使用了日期时间而不是时区。我恢复到迁移的前一个引起警告,删除了它,又跑makemigrations。这解决了我的问题。
我可能是无知的,但我不明白是什么null有用timezone.now()做天真。如果Null = True,那么.now()会返回一个感知对象? – AllTradesJack 2014-08-19 00:46:33
django输入的默认值不是时区知道 – mobiletim 2014-12-21 13:27:08
@mobiletim我仍然有点困惑,为什么要设置'null = True'使错误消失? – 2016-06-02 13:50:41