2010-11-21 9 views
3

私は人のリストを持っています。それぞれの人は生年月日を持っていますが、これはおそらくDateFieldに格納されています。私はそれらの人々のリストを作成しようとしています。月に日に(年を無視して)ソートされています。「誰の誕生日が来ているのか」の表示があります。datetimeの月/日でDjango QuerySetを注文しますか?

QuerySetは、datetime.monthという値で注文することはできません。 list()に強制することにせずにこれを行うことができる方法はありますか?

ご質問ありがとうございました。ご質問に明確化が必要な場合はお知らせください。

答えて

5

あなたは、それによって月フィールドと並べ替えを定義するためにQuerySet.extra()を使用することができますジャンゴの

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

迅速な答えをありがとう! PostgreSQLを使って 'MONTH(birthdate)'を 'EXTRACT(MONTH FROM birthdate)'に置き換えるものを明確にしたかっただけです。 –

+0

正しいメソッド名は余分です – falko

+0

私はこの答えが大好きですが、QuerySet.extra()メソッドがチョッピングブロックにあり、最終的には非推奨になっているようです。 djangoドキュメントには、「このメソッドを最後の手段として使用する」と「これは、将来、ある時点で非推奨にする古いAPIです」と記載されています。 – jbiz

関連する問題