Django - 将DateTimeField设置为timezone.datetime.max

时间:2014-07-05 18:53:05

标签: django datetime

我尝试将日期时间字段的默认值设置为最大日期timezone.datetime.max

from django.db import models
from django.utils import timezone

class Item(models.Model):
  id = models.AutoField(primary_key=True)
  deleted  = models.DateTimeField(default=timezone.datetime.max)

当我尝试将新对象保存到db

时,我收到此错误
/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py:903:
RuntimeWarning: DateTimeField Item.deleted received a naive datetime (9999-12-31 23:59:59.999999) while time zone support is active. RuntimeWarning)

因此,请阅读docs关于此问题的问题,并设置USE_TZ=True,并且我已安装pytz

2 个答案:

答案 0 :(得分:4)

timezone.datetime - 这是常规的python datetime.datetime模块,它在django.utils.timezone中导入并返回常规日期时间,因此您需要让它知道:

timezone.make_aware(timezone.datetime.max, timezone.get_default_timezone())

答案 1 :(得分:0)

我遇到了同样的问题,这是我的修复

join

使用“datetime.min”时,我又遇到了一个 -1 年的问题,我用这个解决了:

timezone.datetime.max.replace(tzinfo=timezone.get_default_timezone())