emencia.django.newsletter django 1.4 的日期时间问题



我正在使用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 文档 关于朴素和感知日期时间对象。

相关内容

  • 没有找到相关文章

最新更新