Menu
CoddyTech

行の並べ替え

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

最も安い本、最も新しい本、または古い順から新しい順までのすべてのタイトルを見つけるには、まず本を並べ替える必要があります。order_by() はフィールドに基づいて1つの QuerySet を並べ替えます。Meta の ordering はすべての本に対して同じことを行い、マイナス記号を付けると大きい順から小さい順になります。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("author", flat=True) は Book オブジェクトを介さず、値そのものを返します。例:'Mary Beard'。flat=True を指定しない場合、各値は要素が1つのタプルになります。例:('Mary Beard',)。

challenge icon

チャレンジ

中級

explore.pyを書き換えて、次の2行を出力してください。

  1. Cheapest:と最も安い本のタイトル。
  2. Titles by year:と、最も古い本から順に並べたすべてのタイトルのリスト。リスト自体を出力してください。

「実行」を押すと、コンソールにCheapest: Pride and Prejudice、続いてTitles by year: ['Pride and Prejudice', 'Emma', 'The Murder of Roger Ackroyd', 'The Hobbit', 'Foundation', 'Dune', 'The Name of the Rose', 'Neuromancer', 'SPQR']と表示されます。

自分で試してみよう

from books.models import Book

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

# 2. 年別のタイトル:すべてのタイトルを、古い本から順にリストで

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

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