2010-11-21 152 views
3

我有一個人的名單,每個人都有一個出生日期,這是可預測地存儲在DateField。我試圖創建這些人的列表 - 根據他們出生的個月排序 - 顯示某種「誰的生日即將到來」顯示。按日期時間的月份/日期排序Django QuerySet?

我似乎無法通過該人的datetime.month值訂購QuerySet。有什麼辦法可以做到這一點,而不必訴諸強制list()

在此先感謝,請讓我知道如果問題需要澄清。

回答

5

可以使用QuerySet.extra()通過它來定義一個月份字段和排序:

SomeModel.objects.extra(select={'birthmonth': 'MONTH(birthdate)'}, 
    order_by=['birthmonth']) 
+4

謝謝你的快速解答!只是想澄清那些使用PostgreSQL用'EXTRACT(MONTH FROM birthdate)'替換'MONTH(birthdate)''的人。 – 2010-11-21 03:41:44

+0

正確的方法名稱是額外的 – falko 2014-02-20 17:16:34

+0

儘管我喜歡這個答案,但似乎QuerySet.extra()方法在斬波塊上,並且最終將被棄用。 django文檔聲明:「使用這種方法作爲最後的手段」和「這是一箇舊API,我們打算在將來某個時候棄用」。 – jbiz 2015-12-02 18:27:30

相關問題