मैं django 1.2 To 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 को जोड़कर टाइम-टाइम टाइमज़ोन को जागरूक करने की कोशिश की है, लेकिन यह अभी भी एक ही त्रुटि उठाता है।
मैंने टाइमज़ोन पर कुछ डॉक्स पढ़े हैं, लेकिन इस बात को लेकर असमंजस में हूं कि क्या मुझे सिर्फ टाइम-टाइम के बारे में अवगत कराने की जरूरत है, या क्या मुझे अपने डीबी और मौजूदा डेटा में मूलभूत बदलाव करने की जरूरत है।