行数のカウント
CoddyのDjangoジャーニー「モデルと管理サイト」セクションの一部。レッスン 10/23。
自分が何冊のSF本を持っているか調べるには、すべて読み込んでPythonで数えることもできます。データベースならもっと速く数えられます。次の例はどれも、小さなクエリを1つ実行して、答えを1つ返します。
Book.objects.filter(is_read=True).count() # 1
Book.objects.filter(price__gt=20).exists() # False
len(Book.objects.all()) # 9、9行すべてを読み込んだ後count()は、一致する行数を返します。exists()は、少なくとも1行が一致する場合はTrueを、1行も一致しない場合はFalseを返します。どちらも、filter()またはexclude()の後、QuerySetの末尾に置きます。len()はcount()と同じ数を返しますが、すべての行をPythonに読み込んだ後でしか使えないため、大きなテーブルでは処理が遅くなります。
チャレンジ
簡単explore.pyを書き換えて、次の2行を出力しましょう。
Science fiction:と、SF小説の冊数。Any Tolkien:と、J.R.R. Tolkienの本が本棚にあるかどうか。
「実行」を押すと、コンソールにScience fiction: 3とAny Tolkien: Trueが表示されます。
自分で試してみよう
from books.models import Book
# 1. SF:SFの本が何冊あるか
# 2. Tolkienの本:J.R.R. Tolkienの本が本棚にあるかどうか
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
モデルと管理サイトのすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド