Django Academy · レッスン

values、values_list、count

軽量なデータと集計結果を取得します

レッスン 4/413 ステップ

「values、values_list、count」はCoddyKit上の無料Django Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDjango Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Django Academyコースには全4レッスンが含まれています。

軽量化する理由

完全なモデルオブジェクトにはすべてのフィールドが含まれます。1つか2つの列だけが必要な場合は、より軽量なツールで取得するデータを減らし、高速に実行できます。

values() は辞書を返す

values()を呼び出すと、各行がモデルインスタンスではなく辞書として返されます。JSON や簡単な読み取り処理に便利です。

Book.objects.values("title", "year")

必要なものだけを選ぶ

values()に渡すフィールドを指定すると、Django はその列だけを選択するため、各辞書を小さく必要な情報に絞れます。

Book.objects.values("title")

values_list() はタプルを返す

タプルを使いたい場合は、values_list()を使います。指定したフィールドの順序で、各行を値のタプルとして返します。

Book.objects.values_list("title", "year")

1つの列をフラット化する

1つのフィールドだけを取得する場合は、flat=Trueを追加すると、1要素タプルではなく通常の値だけで構成されたリストを取得できます。

Book.objects.values_list("title", flat=True)

flat は1つのフィールドでのみ使える

flat=Trueは1つのフィールドでのみ機能することを覚えておいてください。2つのフィールドを渡すと、Django は明確にするためエラーを発生させます。

これらも QuerySet のまま

values() と values_list() はどちらも遅延評価されるQuerySet のままなので、実行される前にフィルターや並べ替えを行えます。

Book.objects.filter(published=True).values("title")

読み込まずに件数を数える

合計だけが必要ですか?count()を使うと、データベースに直接行数を数えさせられます。すべてを Python に読み込むより、はるかに効率的です。

Book.objects.filter(published=True).count()

count と len の違い

件数だけが必要な場合はcount()を使います。先に len() を呼び出すと、すべてのオブジェクトを読み込んでからメモリ上で数えることになります。

一致するものがあるか確認する

行が存在するか確認するには、exists()のほうが count() より適しています。最初に一致した時点で停止し、単純な True または False を返します。

Book.objects.filter(year=2024).exists()

組み合わせてすっきり読み取る

自由に組み合わせて使えます。filter で絞り込み、values_listで整ったリストにするか、count で合計を求めます。各クエリを軽量に保てます。

Book.objects.filter(published=True).values_list("id", flat=True)

クイックチェック

タプルや辞書ではなく、すべての本のタイトルを通常のリストとして取得したいとします。何を使いますか?

まとめ

すばらしいです!values()は辞書を、values_list()はタプルを返し、count()はデータベース上で行数を集計します。📊

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「values、values_list、count」レッスンは無料ですか?

はい。「values、values_list、count」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Django Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Django Academyコースには全4レッスンが含まれています。

「values、values_list、count」で何を学びますか?

軽量なデータと集計結果を取得します ブラウザで直接実行するハンズオンコードでDjango Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Django Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDjango Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「values、values_list、count」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDjango Academyレッスンでコードを書いて実行できますか?

はい。すべてのDjango Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. all()、get()、filter()
  2. フィールドルックアップとexclude()
  3. order_by、スライス、遅延評価
  4. values、values_list、count
← Django Academyに戻る