Джанго 1.4 - не могу сравнить дату и время без смещения и с учетом смещения

Я нахожусь в процессе переноса приложения с django 1.2 на 1.4.

У меня есть объект ежедневной задачи, который содержит время дня, когда задача должна быть выполнена:

class DailyTask(models.Model):
    time = models.TimeField()
    last_completed = models.DateTimeField()
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=1000)
    weekends = models.BooleanField()

    def __unicode__(self):
        return '%s' % (self.name)

    class Meta:
        db_table = u'dailytask'
        ordering = ['name']

Чтобы проверить, требуется ли выполнение задачи сегодня, у меня есть следующий код:

def getDueDailyTasks():
    dueDailyTasks=[]
    now = datetime.datetime.now()
    try:
        dailyTasks = DailyTask.objects.all()
    except dailyTask.DoesNotExist:
        return None
    for dailyTask in dailyTasks:
        timeDue = datetime.datetime(now.year,now.month,now.day,dailyTask.time.hour,dailyTask.time.minute,dailyTask.time.second)
        if timeDue<now and timeDue>dailyTask.last_completed:
            if dailyTask.weekends==False and now.weekday()>4:
                pass
            else:
                dueDailyTasks.append({'id':dailyTask.id,
                            'due':timeDue,
                             'name': dailyTask.name,
                             'description':dailyTask.description})
    return dueDailyTasks

Это сработало. хорошо под 1.2, но под 1.4 я получаю сообщение об ошибке:

can't compare offset-naive and offset-aware datetimes

из-за строки

if timeDue<now and timeDue>dailyTask.last_completed

, и оба предложения сравнения выдают эту ошибку.

Я попытался сделать timeDue осведомленным о часовом поясе, добавив pytz.UTC в качестве аргумента, но это по-прежнему вызывает ту же ошибку.

Я прочитал некоторые документы по часовым поясам, но не могу понять, нужно ли мне просто указать часовой пояс timeDue или мне нужно внести фундаментальные изменения в мою базу данных и существующие данные.

82
задан meepmeep 21 December 2015 в 13:33
поделиться