【Django】views.py:クエリセットオブジェクトの件数を数える方法(countメソッド)

時計 2022.11.09 / 時計

【Django】views.py:クエリセットオブジェクトの件数を数える方法(countメソッド)

記事ではDjangoにおける、views.pyでクエリセットオブジェクト件数数える方法について解説していきます。

Djangoにはデータベースのレコードをオブジェクトとして取得する仕組みがあります。その仕組みとはデータベースに対してクエリを実行し、オブジェクト(レコード)を取得することです。

IT用語の確認

クエリ(query)とは、DBMS(データベース管理システム)に対して取得・追加・更新などの処理を要求するための記述方です。またクエリにより取得したデータリストをクエリセット(queryset)と呼びます

データベースやDBMSについて詳しく知りたい方は以下記事をご参照ください。

クエリを実行して取得したオブジェクト(レコード)はクエリセットやクエリセットオブジェクトと呼ぶことがあります。

DjangoでWebアプリケーションを作成していると、このオブジェクトの件数を取得したいことがあります。本記事ではオブジェクトの件数を取得するための最も簡単な方法である、count()メソッドで取得する方法について解説していきます。

クエリによるオブジェクトの取得

オブジェクトの件数を取得する方法の前に、クエリによってデータベースからオブジェクト(レコード)を取得することについて解説していきます。

DjangoではORM(Object-Relational Mapping)という技法を利用してデータベース操作を行います。ORMはデータベースとマッピングされたオブジェクトを利用して、データベースを操作する技法のことです。

このORMによりSQLを全く意識せずに簡単にデータベース操作(取得・追加・削除など)ができます。

データベース操作のクエリは以下構文を基本とします。

構文

モデルクラス.マネージャー.メソッド()

例えばデータベースからレコード全件を取得する場合は以下のように記述します。

from .models import Booking
bookings = Booking.objects.all()

objectsがマネージャーであり、クエリ操作を提供するインターフェースです。all()がメソッドであり、Bookingモデルのレコード全件を取得しています。

このレコード全件とははたして何件あるのか?を知る方法を次項で解説します。

オブジェクトの件数を数える:count()メソッド

クエリで返されたオブジェクト(レコード)の件数を数えるメソッドはcount()メソッドです。

count()メソッドは以下のようにクエリに続けて使用することができます。

>>> Booking. objects.all().count()
10

views.py内で利用するときは大抵クエリセットオブジェクトを変数に代入し、そのクエリセットオブジェクトに対して利用することが多いです。

bookings = Booking.objects.all()
print(bookings.count())
# 10

全件検索でなく、get()やfilter()などの検索に対してもcount()メソッドはもちろん有効です。

num = Booking.objects.all().count()
print(num)
# 10

データベースからデータ(レコード)を検索するためのメソッド(get()やfilter()など)の使用方法について詳しく知りたい方は以下記事をご参照ください。

まとめ

本記事「【Django】views.py:クエリセットオブジェクトの件数を数える方法(countメソッド)」はいかがでしたか。

ぜひDjangoで作成するWebアプリケーションに、count()メソッドを利用してみてください。