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

时间:2012-06-13 10:27:20

标签: python django timezone

我正在使用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

有什么想法吗?

1 个答案:

答案 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文档。