Menu
CoddyTech

行の並べ替え

CoddyのDjangoジャーニー「モデルと管理サイト」セクションの一部。レッスン 11/23。

最も安い本、最も新しい本、タイトルを古い順に並べたもの。いずれも順序に関する質問です。order_by()はフィールドで1つのQuerySetを並べ替え、MetaのorderingはすべてのQuerySetに対して同じことを行います。また、マイナス記号を付けると大きい値から小さい値へ並べ替えます。first()は最初の行を返し、行がない場合はNoneを返すため、get()とは異なり、例外を発生させることはありません。

Book.objects.order_by("-year").first()   # <Book: SPQR by Mary Beard>
Book.objects.order_by("-price").values_list("author", flat=True)
# <QuerySet ['Mary Beard', 'Umberto Eco', ...]>

values_list()はBookオブジェクトを介さず、1つのフィールドの値を返します。flat=Trueを指定しない場合、各値は('Mary Beard',)のような要素が1つだけのタプルになります。

challenge icon

チャレンジ

中級

explore.pyを書き換えて、次の2行を出力します。

  1. Cheapest:と最も安い本のタイトル。
  2. Titles by year:と、古い本から順に並んだすべてのタイトルのリスト。

「Run」を押します。コンソールにはCheapest: Pride and PrejudiceとTitles by year: ['Pride and Prejudice', 'Emma', ...]が表示されます。

自分で試してみよう

from books.models import Book

# 1. 最安値:最も安い本のタイトル

# 2. 出版年順のタイトル:すべての本のタイトルを古い本から順に並べたリスト

モデルと管理サイトのすべてのレッスン

自分で練習してみよう: Djangoプレイグラウンド