我正在使用emencia.django.newsletter
.当我运行"python manage.py send_newsletter"时,出现此错误
if self.newsletter.sending_date <= datetime.now() and
TypeError: can't compare offset-naive and offset-aware datetimes
这就是错误的来源:
def can_send(self):
"""Check if the newsletter can be sent"""
if self.test:
return True
if self.newsletter.sending_date <= datetime.now() and
(self.newsletter.status == Newsletter.WAITING or
self.newsletter.status == Newsletter.SENDING):
return True
return False
我使用 Django 1.4
有什么想法吗?
您的sending_date
值是时区感知的,但datetime.now()
是时区幼稚的。正如错误消息所说,您无法比较它们。
答案是在进行比较之前将now
转换为时区感知日期时间。
import datetime
from django.utils.timezone import utc
now = datetime.datetime.utcnow().replace(tzinfo=utc)
if self.newsletter.sending_date <= now and
...
有关更多信息,请参阅 Django 文档 关于朴素和感知日期时间对象。