all()、get()、filter()
オブジェクトを取得する基本的な方法を学びます
「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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- all()、get()、filter()
- フィールドルックアップとexclude()
- order_by、スライス、遅延評価
- values、values_list、count