Django ORMのfilter活用|初心者が最初に覚える検索クエリをやさしく解説
生徒
「Django(ジャンゴ)で、特定のデータだけを取り出す方法ってありますか?」
先生
「あります。Django ORM(ディージャンゴ オーアールエム)のfilterを使うと、条件に合ったデータだけを簡単に検索できます。」
生徒
「検索って難しそうですが、パソコンを触ったことがなくても理解できますか?」
先生
「大丈夫です。紙の名簿から条件に合う人を探すような感覚で説明します。」
1. Django ORMとfilterの基本的な考え方
Django ORMとは、データベースを直接操作する代わりに、Python(パイソン)の文章のような書き方でデータを扱える仕組みです。データベースとは、たくさんの情報を表の形で保存しておく箱のようなものです。
その中から必要な情報だけを取り出すときに使うのがfilterです。filterは「条件に合うものだけを選び出す」という意味で、名簿から「二十歳以上の人だけを見る」といった作業に近い考え方です。
2. filterは何をしているのかをイメージしよう
filterを使うと、保存されている大量のデータの中から、指定した条件に合うデータだけを取り出せます。例えば「名前が山田の人だけ」「年齢が十八歳以上の人だけ」といった探し方ができます。
プログラミング未経験の方は、「検索」という言葉を、紙の書類を目で見て探す作業だと思ってください。filterは、その作業を自動で高速に行ってくれる便利な仕組みです。
3. 完全に一致するデータをfilterで探す
まずは、一番シンプルな使い方です。ある項目が、指定した内容とぴったり同じデータを探します。ここでは、名前が「太郎」のデータを探す例を見てみましょう。
from app.models import User
users = User.objects.filter(name="太郎")
この書き方は、「Userという名簿の中から、名前が太郎の人を全部探してください」という意味です。条件に合うデータが複数あれば、すべてまとめて取得されます。
4. 数字の条件でfilterを使う方法
次は、数字を使った条件です。年齢や金額など、数値で条件を指定することもできます。例えば、年齢が二十歳以上の人だけを探す場合を考えてみましょう。
from app.models import User
adult_users = User.objects.filter(age__gte=20)
ここで使われているgteは「以上」という意味です。難しく見えますが、「二十以上」と覚えてしまって問題ありません。filterは、このように条件を少しずつ指定して検索できます。
5. 文字が含まれているかで検索する
filterでは、「ある文字が含まれているかどうか」で検索することもできます。例えば、メールアドレスに「example」という文字が入っているデータを探す場合です。
from app.models import User
example_users = User.objects.filter(email__contains="example")
containsは「含まれている」という意味です。住所や説明文など、文章の一部で探したいときにとても役立ちます。
6. 条件を組み合わせてfilterを使う
filterは、複数の条件を同時に指定できます。例えば、「年齢が二十歳以上」で「名前に田が含まれる人」を探すこともできます。
from app.models import User
users = User.objects.filter(age__gte=20, name__contains="田")
これは、名簿を見ながら「この条件も満たしていて、さらにこの条件も満たしている人」を探す作業と同じです。難しく考えず、条件を並べて書いているだけだと考えてください。
7. filterで取得したデータの扱い方
filterで取得したデータは、箱のような形でまとめて返ってきます。そのため、一つずつ順番に取り出して使うことができます。これは、複数人の情報が入ったファイルを一人ずつ確認するイメージです。
for user in users:
print(user.name)
このように書くと、条件に合った人の名前を順番に表示できます。filterは「探す」、その後は「使う」という流れを覚えておくと理解しやすくなります。
8. 初心者がつまずきやすいポイント
Django ORMのfilterは便利ですが、最初は「条件の書き方がわからない」「何が返ってくるのかわからない」と感じやすいです。大切なのは、filterは検索であり、結果は一つとは限らないという点です。
まずは「完全一致」「数字の条件」「文字が含まれるか」の三つをしっかり理解すれば、Djangoでのデータ検索はぐっと楽になります。難しい操作を覚える必要はなく、日常の探し物に置き換えて考えることが理解への近道です。