我想时区管理已添加到 Django 1.4,所以这个问题是相当新的。
我使用了一个简单的模型
class Sample(models.Model):
...
date_generated = models.DateTimeField(auto_now_add = True)
当我尝试检索新创建的记录时,它失败了。
min_datetime = datetime.now() - timedelta(seconds = 300)
sample = Sample.objects.get(date_generated__gte = min_datetime)
服务器发出警告。
DateTimeField received a naive DateTime (2012-06-29 15:02:15.074000) while time zone support is active.
我想出了两个解决这个问题的办法。
在 settings.py 中禁用时区管理
USE_TZ = False
但这并不总是可取的。2.改变
date_generated = models.DateTimeField(auto_now_add = True)
至
date_generated = models.DateTimeField(default=datetime.now())
是保持时区管理正常工作的解决方案