行数のカウント
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()はTrueまたはFalseで答えます。つまり、少なくとも1つあるかどうかを返します。どちらも、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. トールキンの本:J.R.R. Tolkienの本が棚にあるかどうか
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
モデルと管理サイトのすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド