カテゴリ: 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
Python
Pythonでセットの要素数を調べる方法(len()の使い方)を初心者向けに解説!
New2
Python
Pythonのfrozensetとは?ミュータブルなsetとの違いをわかりやすく解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Python
Pythonでセットを活用してデータをフィルタリングする方法!初心者でもわかるセットの基本と使い方
人気記事
No.1
Java&Spring記事人気No1
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Python
Pythonでトランザクション処理を実装する方法を完全解説!commit・rollbackで安全なSQL操作
No.3
Java&Spring記事人気No3
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.4
Java&Spring記事人気No4
Flask
FlaskでAPIを作る基本!初心者向けに仕組みと特徴をやさしく解説
No.5
Java&Spring記事人気No5
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.6
Java&Spring記事人気No6
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
Python
Pythonの文字列操作完全ガイド!結合・分割・検索の基本をやさしく解説
No.8
Java&Spring記事人気No8
Flask
FlaskのSQLAlchemyでフィルタリング検索!filter, filter_byの使い方完全ガイド