Menu
CoddyTech

全件取得と単件取得

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

ページに本を表示するには、まずコードで本を読み込む必要があります。Book.objects.all()は、ループで処理できるリストのようなオブジェクトであるQuerySetを返します。各項目は、フィールドを属性として持つBookです。get()は行をちょうど1つ取得します。

for book in Book.objects.all():
    print(book.author, book.year)

emma = Book.objects.get(title="Emma")
print(emma.year)   # 1815

get()は一致するものが1つだけあることを想定します。一致するものがない場合はBook.DoesNotExistが発生し、複数ある場合はBook.MultipleObjectsReturnedが発生します。これらは他の例外と同じように捕捉できます。ここにある2冊はジェーン・オースティンの作品です。

try:
    Book.objects.get(author="Jane Austen")
except Book.MultipleObjectsReturned:
    print("More than one")

捕捉されない場合、その例外が発生した行でスクリプトは停止します。

challenge icon

チャレンジ

簡単

explore.pyを書き換えましょう。

  1. すべての本のタイトルを、1行に1つずつ表示します。
  2. Duneを取得し、Dune costsとその価格を表示します:Dune costs 9.99。
  3. 本棚にないUlyssesを検索し、クラッシュする代わりにUlysses is not on the shelfと表示します。

Runを押します。Consoleに9つのタイトルが表示され、その後に2つの文が表示されます。

自分で試してみよう

from books.models import Book

# 1. すべての本のタイトルを1行に1つずつ表示する。

# 2. Duneを取得し、その価格を表示する。

# 3. Ulyssesを探す。
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

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

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