Django Academy · レッスン

all()、get()、filter()

オブジェクトを取得する基本的な方法を学びます

レッスン 1/413 ステップ

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

Managerを使う

すべてのモデルには、無料で使えるobjectsマネージャーが用意されています。これはデータベースへの入口であり、作成するすべてのクエリはここから始まります。🚪

Book.objects

すべて取得する

all()を呼び出すと、テーブルのすべての行を要求できます。返されるQuerySetは、ループ処理、件数の取得、さらなる絞り込みに利用できます。

books = Book.objects.all()

QuerySetはリストではない

QuerySetはリストのように見えますが、遅延評価されます。Djangoは、結果を実際に使うまでデータベースにアクセスしません。

1件だけ取得する

一致する行が1つだけだと予想される場合はget()を使います。たとえば、主キーで1つのレコードを取得する場合です。

book = Book.objects.get(pk=1)

get()が失敗する場合

get()は厳密です。一致するものがないとDoesNotExistを発生させるため、1行が確実に存在するときだけ使用してください。

Book.objects.get(pk=999)

一致する行が多すぎる場合

get()が複数の行を見つけると、MultipleObjectsReturnedを発生させます。本当に1つだけを取得するためのメソッドです。

一部を絞り込む

条件に一致する行を取得したい場合はfilter()を使います。一致する行が1つだけでも、QuerySetが返されます。

Book.objects.filter(published=True)

Filterは0件以上を返す

get()とは異なり、filter()は一致するものがなくても例外を発生させません。エラーの代わりに、空のQuerySetが返されます。

Book.objects.filter(author="Nobody")

複数の条件

filter()に複数のキーワード引数を渡すと、DjangoはそれらをANDで結合します。すべての条件を満たす必要があります。

Book.objects.filter(published=True, year=2024)

getとfilterの違い

1つのオブジェクトが確実に必要な場合はget()を、複数の結果を扱う場合はfilter()を使います。この使い分けだけで、初心者にありがちなクエリのバグの多くを防げます。

フィルターを連結する

filter()はQuerySetを返すため、データベースにアクセスする前に呼び出しを連結し、段階的に結果を絞り込めます。

Book.objects.filter(published=True).filter(year=2024)

クイックチェック

1冊の本を期待していますが、一致するものがありません。エラーを発生させる呼び出しはどれですか。

まとめ

よくできました。all()はすべてを取得し、get()は指定した1行を取得し、filter()は連結可能な一部の結果を返します。🎉

無料で開始

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

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

コース
30
レッスン
120

よくある質問

「all()、get()、filter()」レッスンは無料ですか?

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

「all()、get()、filter()」で何を学びますか?

オブジェクトを取得する基本的な方法を学びます ブラウザで直接実行するハンズオンコードでDjango Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「all()、get()、filter()」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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