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
두 비교 절 모두이 오류가 발생합니다.
pytz.UTC를 인수로 추가하여 timeDue 시간대를 인식하도록 시도했지만 여전히 동일한 오류가 발생합니다.
시간대에 대한 문서 중 일부를 읽었지만 timeDue 시간대를 인식해야하는지 아니면 DB 및 기존 데이터를 근본적으로 변경해야하는지에 대해 혼란스러워합니다.