目次
はじめに
DjangoはPythonで最も人気のあるWebフレームワークの一つです。その強力な機能の中で、ORM(Object-Relational Mapping)はデータベース操作を容易にします。
特に.filter()
メソッドは、データベースからデータを効率的に取得するために広く利用されています。この記事では、.filter()
メソッドの使い方を、豊富なコード例を交えて解説します。
filter()基本的な使い方
この記事では、ブログアプリケーションにおける具体的なユースケースを通じて紹介します。
前提:モデルの紹介
まずは、使用するモデルArticle
とAuthor
を定義します。
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”によって書かれた記事を取得します。