我已經寫在Python 2.6以下代碼中,與具有Task
類的可選due_date
:更改比較函數使用鍵進行排序
class Task(models.Model):
due_date = models.DateField(null = True, blank = True)
@staticmethod
def compare_by_due_date(t1, t2):
return due_date_cmp(t1.due_date, t2.due_date)
def due_date_cmp(t1, t2):
if t1 is None and t2 is None:
return 0;
if t1 is None:
return 1
if t2 is None:
return -1
return (t1 - t2).days
爲什麼提取的比較函數的類之外的原因是我希望能夠測試它,而無需構建Task
實例。我用compare_by_due_date
下面的代碼通過增加到期日定購任務,與不具有到期日在列表的最後任務:
tasks = Task.objects.all()
tasks.sort(Task.compare_by_due_date)
我從this answer on Code Review明白,我應該能夠使用keys instead of comparison function?你能告訴我如何?
傳統上使用'is'而不是'=='。 – 2011-02-02 20:12:32
謝謝!我編輯了這個問題。 – 2011-02-02 20:40:53