我尝试将日期时间字段的默认值设置为最大日期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
。
答案 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())