Tôi đang trong quá trình di chuyển ứng dụng từ django 1.2 sang 1.4.
Tôi có một đối tượng nhiệm vụ hàng ngày chứa thời gian trong ngày mà nhiệm vụ đó sẽ được hoàn thành:
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']
Để kiểm tra xem một nhiệm vụ có còn được yêu cầu hoàn thành hôm nay hay không, tôi có mã sau:
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
Điều này hoạt động tốt dưới 1,2, nhưng dưới 1,4, tôi gặp lỗi:
can't compare offset-naive and offset-aware datetimes
do dòng
if timeDue<now and timeDue>dailyTask.last_completed
và cả hai mệnh đề so sánh đều mắc lỗi này.
Tôi đã thử làm cho múi giờ timeDue nhận biết bằng cách thêm pytz.UTC làm đối số, nhưng điều này vẫn gây ra lỗi tương tự.
Tôi đã đọc một số tài liệu về múi giờ nhưng bối rối không biết liệu tôi có cần nhận biết múi giờ timeDue hay không, hay liệu tôi có cần thực hiện một thay đổi cơ bản đối với db và dữ liệu hiện có của mình hay không.