我正在使用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
有什么想法吗?
答案 0 :(得分:2)
您的sending_date
值时区感知,但datetime.now()
timezone naive 。正如错误消息所示,您无法比较它们。
答案是在进行比较之前将now
转换为时区感知日期时间。
import datetime
from django.utils.timezone import utc
now = datetime.datetime.utcnow().replace(tzinfo=utc)
if self.newsletter.sending_date <= now and \
...
有关详细信息,请参阅naive and aware datetime objects上的Django文档。