カテゴリ: Django 更新日: 2026/02/04

Django ORMのfilter活用|初心者が最初に覚える検索クエリをやさしく解説

Django ORMのfilter活用|初心者が最初に覚える検索クエリ
Django ORMのfilter活用|初心者が最初に覚える検索クエリ

先生と生徒の会話形式で理解しよう

生徒

「Django(ジャンゴ)で、特定のデータだけを取り出す方法ってありますか?」

先生

「あります。Django ORM(ディージャンゴ オーアールエム)のfilterを使うと、条件に合ったデータだけを簡単に検索できます。」

生徒

「検索って難しそうですが、パソコンを触ったことがなくても理解できますか?」

先生

「大丈夫です。紙の名簿から条件に合う人を探すような感覚で説明します。」

1. Django ORMとfilterの基本的な考え方

1. Django ORMとfilterの基本的な考え方
1. Django ORMとfilterの基本的な考え方

Django ORMとは、データベースを直接操作する代わりに、Python(パイソン)の文章のような書き方でデータを扱える仕組みです。データベースとは、たくさんの情報を表の形で保存しておく箱のようなものです。

その中から必要な情報だけを取り出すときに使うのがfilterです。filterは「条件に合うものだけを選び出す」という意味で、名簿から「二十歳以上の人だけを見る」といった作業に近い考え方です。

2. filterは何をしているのかをイメージしよう

2. filterは何をしているのかをイメージしよう
2. filterは何をしているのかをイメージしよう

filterを使うと、保存されている大量のデータの中から、指定した条件に合うデータだけを取り出せます。例えば「名前が山田の人だけ」「年齢が十八歳以上の人だけ」といった探し方ができます。

プログラミング未経験の方は、「検索」という言葉を、紙の書類を目で見て探す作業だと思ってください。filterは、その作業を自動で高速に行ってくれる便利な仕組みです。

3. 完全に一致するデータをfilterで探す

3. 完全に一致するデータをfilterで探す
3. 完全に一致するデータをfilterで探す

まずは、一番シンプルな使い方です。ある項目が、指定した内容とぴったり同じデータを探します。ここでは、名前が「太郎」のデータを探す例を見てみましょう。


from app.models import User

users = User.objects.filter(name="太郎")

この書き方は、「Userという名簿の中から、名前が太郎の人を全部探してください」という意味です。条件に合うデータが複数あれば、すべてまとめて取得されます。

4. 数字の条件でfilterを使う方法

4. 数字の条件でfilterを使う方法
4. 数字の条件でfilterを使う方法

次は、数字を使った条件です。年齢や金額など、数値で条件を指定することもできます。例えば、年齢が二十歳以上の人だけを探す場合を考えてみましょう。


from app.models import User

adult_users = User.objects.filter(age__gte=20)

ここで使われているgteは「以上」という意味です。難しく見えますが、「二十以上」と覚えてしまって問題ありません。filterは、このように条件を少しずつ指定して検索できます。

5. 文字が含まれているかで検索する

5. 文字が含まれているかで検索する
5. 文字が含まれているかで検索する

filterでは、「ある文字が含まれているかどうか」で検索することもできます。例えば、メールアドレスに「example」という文字が入っているデータを探す場合です。


from app.models import User

example_users = User.objects.filter(email__contains="example")

containsは「含まれている」という意味です。住所や説明文など、文章の一部で探したいときにとても役立ちます。

6. 条件を組み合わせてfilterを使う

6. 条件を組み合わせてfilterを使う
6. 条件を組み合わせてfilterを使う

filterは、複数の条件を同時に指定できます。例えば、「年齢が二十歳以上」で「名前に田が含まれる人」を探すこともできます。


from app.models import User

users = User.objects.filter(age__gte=20, name__contains="田")

これは、名簿を見ながら「この条件も満たしていて、さらにこの条件も満たしている人」を探す作業と同じです。難しく考えず、条件を並べて書いているだけだと考えてください。

7. filterで取得したデータの扱い方

7. filterで取得したデータの扱い方
7. filterで取得したデータの扱い方

filterで取得したデータは、箱のような形でまとめて返ってきます。そのため、一つずつ順番に取り出して使うことができます。これは、複数人の情報が入ったファイルを一人ずつ確認するイメージです。


for user in users:
    print(user.name)

このように書くと、条件に合った人の名前を順番に表示できます。filterは「探す」、その後は「使う」という流れを覚えておくと理解しやすくなります。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

Django ORMのfilterは便利ですが、最初は「条件の書き方がわからない」「何が返ってくるのかわからない」と感じやすいです。大切なのは、filterは検索であり、結果は一つとは限らないという点です。

まずは「完全一致」「数字の条件」「文字が含まれるか」の三つをしっかり理解すれば、Djangoでのデータ検索はぐっと楽になります。難しい操作を覚える必要はなく、日常の探し物に置き換えて考えることが理解への近道です。

カテゴリの一覧へ
新着記事
New1
Django
Djangoバリデーション完全入門|cleanメソッドで学ぶカスタムチェックの書き方【初心者向け】
New2
Flask
FlaskとAWS S3を連携!静的ファイルを効率よく配信する初心者向け完全ガイド
New3
Python
Pythonで例外の種類ごとに処理を分ける方法を完全解説!初心者でもわかる複数except入門
New4
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.4
Java&Spring記事人気No4
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.5
Java&Spring記事人気No5
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonのコーディング規約(PEP8)とは?初心者でもわかる書き方の基本ルール
No.7
Java&Spring記事人気No7
Flask
Flaskでフロントエンドからファイルアップロードを行う基本手順【初心者向け】
No.8
Java&Spring記事人気No8
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方