Django ORM excludeメソッドの使い方:実践的なコード例で学ぶ除外フィルタリング

はじめに

DjangoのORMは、データベースとのやりとりをシンプルにする多くの機能を提供します。その中で.exclude()メソッドは、特定の条件に一致しないオブジェクトを取得する際に重要な役割を果たします。この記事では、.exclude()メソッドの使い方を、実践的な例を通じて解説します。

excludeメソッドの基本的な使い方

1. はじめに

この記事では、オンライン書店アプリケーションを例に、DjangoのORMで.exclude()メソッドを使ったデータベースクエリの実例を掘り下げていきます。

2. モデルの紹介

まず、以下のようにBookAuthorモデルを定義します。

from django.db import models

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

class Book(models.Model):
    title = models.CharField(max_length=200)
    publication_date = models.DateField()
    author = models.ForeignKey(Author, on_delete=models.CASCADE)

3. 特定の著者の書籍を除外

特定の著者の書籍を除外するには:

books = Book.objects.exclude(author__name="John Doe")

このクエリでは、”John Doe”という名前の著者による書籍を除外しています。

4. 特定の期間に発行された書籍を除外

特定の期間に発行された書籍を除外するには:

from datetime import date

start_date = date(2023, 1, 1)
end_date = date(2023, 12, 31)

books = Book.objects.exclude(publication_date__range=(start_date, end_date))

このコードは、2023年に発行された書籍を除外しています。

5. 特定のタイトルを含む書籍を除外

特定の単語がタイトルに含まれる書籍を除外するには:

books = Book.objects.exclude(title__contains="Python")

この例では、タイトルに”Python”を含む書籍を除外します。

6. 複数の条件を組み合わせて除外

複数の条件を組み合わせて除外する例:

books = Book.objects.exclude(
    publication_date__year=2023,
    author__name="John Doe"
)

このクエリは、2023年に発行された”John Doe”の書籍を除外します。

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