ฉันอยู่ระหว่างการย้ายแอปพลิเคชันจาก 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 ตระหนักถึงเขตเวลาหรือไม่หรือฉันต้องทำการเปลี่ยนแปลงพื้นฐานกับฐานข้อมูลและข้อมูลที่มีอยู่