1. ホーム
  2. python

[解決済み] クエリセットをソートする良い方法とは - Django

2022-05-08 14:48:12

質問

私がやろうとしていることは、こういうことです。

  • 30人の作家を最高得点で獲得する( Author.objects.order_by('-score')[:30] )

  • で著者を注文してください。 last_name


何か提案はありますか?

どのように解決するのですか?

についてはどうですか?

import operator

auths = Author.objects.order_by('-score')[:30]
ordered = sorted(auths, key=operator.attrgetter('last_name'))

Django 1.4 以降では、複数のフィールドを提供することで注文できます。

参考 https://docs.djangoproject.com/en/dev/ref/models/querysets/#order-by

order_by(*fields)

デフォルトでは QuerySet で指定された順序付けタプルで並べられます。 ordering オプションを指定します。これをクエリセットごとにオーバーライドするには、モデルメタの order_by メソッドを使用します。

ordered_authors = Author.objects.order_by('-score', 'last_name')[:30]

上記の結果は、次の順序で並べられます。 score が降順、次に last_name を昇順にします。の前にある負の符号は "-score" は降順であることを示します。昇順は暗黙の了解です。