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

Django ORMクエリ入門|部分一致検索・前方一致・後方一致を初心者向けにやさしく解説

Django ORMで部分一致検索・前方一致・後方一致を使う方法
Django ORMで部分一致検索・前方一致・後方一致を使う方法

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

生徒

「Djangoで、名前の一部だけでデータを探すことってできますか?」

先生

「できますよ。Django ORMには、部分一致検索や前方一致、後方一致という便利な検索方法があります。」

生徒

「パソコンをあまり触ったことがなくても理解できますか?」

先生

「大丈夫です。住所録や本棚を探すイメージで、順番に説明していきます。」

1. Django ORMとは何かを超かんたんに説明

1. Django ORMとは何かを超かんたんに説明
1. Django ORMとは何かを超かんたんに説明

Django ORMとは、データベースという「情報をしまっておく箱」を、Pythonの言葉で操作できる仕組みです。普通はデータベースを操作するために難しい専用の言葉が必要ですが、Django ORMを使うと、普段書いているPythonの文で検索や保存ができます。

たとえば「名前が田中の人を探したい」というとき、ORMを使えば「田中」という文字を条件にしてデータを取り出せます。これがDjango ORMクエリ入門の大切な考え方です。

2. 部分一致検索とは?日常生活でたとえると

2. 部分一致検索とは?日常生活でたとえると
2. 部分一致検索とは?日常生活でたとえると

部分一致検索とは、文字の一部が合っていれば見つけてくれる検索方法です。本棚で「Python」という文字がタイトルに少しでも入っている本を全部探すようなイメージです。

Django ORMでは、icontainsという指定を使います。英語が出てきましたが、「contains」は「含む」という意味で、「i」は大文字と小文字を気にしない、という合図です。


from app.models import Book

books = Book.objects.filter(title__icontains="python")

この例では、タイトルに「python」という文字が少しでも入っているデータをすべて探しています。

3. 前方一致検索の考え方と使いどころ

3. 前方一致検索の考え方と使いどころ
3. 前方一致検索の考え方と使いどころ

前方一致検索は、「最初の文字が同じもの」を探す方法です。電話帳で「さ行」から始まる名前を探す感覚に近いです。

Django ORMでは、startswithを使います。これは「〜で始まる」という意味です。


from app.models import User

users = User.objects.filter(username__startswith="tanaka")

このコードは、ユーザー名が「tanaka」から始まる人を探しています。入力補助や検索フォームでよく使われます。

4. 後方一致検索とは?名前の終わりで探す

4. 後方一致検索とは?名前の終わりで探す
4. 後方一致検索とは?名前の終わりで探す

後方一致検索は、「最後の文字が同じもの」を見つける方法です。たとえば、メールアドレスが「.jp」で終わるものだけを探すようなイメージです。

Django ORMでは、endswithを使います。


from app.models import Customer

customers = Customer.objects.filter(email__endswith=".jp")

この例では、日本向けのメールアドレスだけを検索しています。

5. 大文字と小文字を区別しない検索のポイント

5. 大文字と小文字を区別しない検索のポイント
5. 大文字と小文字を区別しない検索のポイント

検索するときに、「Python」と「python」を同じものとして扱いたい場合があります。そんなときは、先ほどのように「i」が付いた指定を使います。

たとえば前方一致でも、大文字小文字を気にしない場合は、次のように書けます。


from app.models import Product

products = Product.objects.filter(name__istartswith="apple")

これで、「Apple」でも「apple」でも検索に引っかかるようになります。

6. 部分一致・前方一致・後方一致の使い分け

6. 部分一致・前方一致・後方一致の使い分け
6. 部分一致・前方一致・後方一致の使い分け

どの検索方法を使うかは、目的で決まります。あいまいに探したいなら部分一致、入力の最初を重視するなら前方一致、決まった終わり方があるなら後方一致が向いています。

Django ORMクエリ入門では、「何を基準に探したいか」を考えることが大切です。これは初心者の方が最初につまずきやすいポイントですが、例えで考えると理解しやすくなります。

7. 初心者がよく間違えるポイント

7. 初心者がよく間違えるポイント
7. 初心者がよく間違えるポイント

よくある間違いは、アンダースコアの数を間違えることです。Django ORMでは、「フィールド名__条件」という形で、アンダースコアを2つ続けて書きます。

また、検索結果はすぐに画面に表示されるわけではなく、「条件に合ったデータの集まり」が返ってくる、という点も重要です。

8. Django ORM検索を覚えるメリット

8. Django ORM検索を覚えるメリット
8. Django ORM検索を覚えるメリット

Django ORMで部分一致検索や前方一致検索、後方一致検索を使えるようになると、Webアプリの使いやすさが一気に上がります。

検索ボックスや絞り込み機能を作るときに必須の知識なので、Django初心者・Python初心者・プログラミング未経験者の方も、ここはじっくり理解しておきたいポイントです。

カテゴリの一覧へ
新着記事
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でデータベースエラーを処理する方法!初心者にもわかる例外の使い方