Django ORMのマスターへの道:filterメソッド完全ガイド

はじめに

DjangoはPythonで最も人気のあるWebフレームワークの一つです。その強力な機能の中で、ORM(Object-Relational Mapping)はデータベース操作を容易にします。

特に.filter()メソッドは、データベースからデータを効率的に取得するために広く利用されています。この記事では、.filter()メソッドの使い方を、豊富なコード例を交えて解説します。

filter()基本的な使い方

この記事では、ブログアプリケーションにおける具体的なユースケースを通じて紹介します。

前提:モデルの紹介

まずは、使用するモデルArticleAuthorを定義します。

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    published_date = models.DateField()
    author = models.ForeignKey(Author, on_delete=models.CASCADE)

まずは、Django ORMの.filter()メソッドの基本的な使い方を見ていきましょう。

例1: ある著者の全記事を取得

特定の著者による全ての記事を取得するには、以下のようにします。

articles = Article.objects.filter(author__name="John Doe")

このコードは、名前が”John Doe”の著者によって書かれたすべての記事を取得します。

例2: 特定の日付範囲の記事を取得

特定の日付範囲内で公開された記事を取得するには

from datetime import date

start_date = date(2023, 1, 1)
end_date = date(2023, 6, 30)

articles = Article.objects.filter(published_date__range=(start_date, end_date))

例3: タイトルに特定の単語が含まれる記事を取得

タイトルに特定の単語が含まれる記事を検索する場合

articles = Article.objects.filter(title__contains="Django")

例4: 複数条件の組み合わせ

複数の条件を組み合わせてフィルタリングする例

articles = Article.objects.filter(
    published_date__year=2023,
    author__name="John Doe"
)

このコードは、2023年に公開され、”John Doe”によって書かれた記事を取得します。

タイトルとURLをコピーしました