2012-06-13 50 views
0

我正在使用emencia.django.newsletter。當我運行`蟒蛇manage.py send_newsletter」我得到這個錯誤emencia.django.newsletter datetime django問題1.4

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

任何想法?

回答

2

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文檔naive and aware datetime objects