Метод exclude

Метод exclude применяется к QuerySet и возвращает новый QuerySet, содержащий объекты, которые не соответствуют переданным условиям. Он работает противоположно методу filter - включает все записи, кроме тех, которые удовлетворяют указанным критериям. Аргументы передаются в виде ключевых параметров, где ключ - это имя поля с оператором поиска, а значение - условие исключения. Метод можно вызывать цепочкой для уточнения исключений.

Синтаксис

pythonModel.objects.exclude(**conditions)

Пример

Исключим статьи, у которых статус равен 'draft':

pythonfrom myapp.models import Article

published_articles = Article.objects.exclude(status='draft')
for article in published_articles:
  print(article.title)

Результат выполнения кода:

python"article 1"
"article 2"
"article 3"

Пример

Исключим статьи, созданные до 2025 года:

pythonfrom myapp.models import Article
from datetime import date

new_articles = Article.objects.exclude(created_at__date__lt=date(2025, 1, 1))
for article in new_articles:
  print(article.title)

Результат выполнения кода:

python"article 1"
"article 2"

Пример

Цепочка исключений для выборки статей, у которых рейтинг не ниже 4 и статус не 'archived':

pythonfrom myapp.models import Article

result = (Article.objects
  .exclude(rating__lt=4)
  .exclude(status='archived')
)
for article in result:
  print(article.title)

Результат выполнения кода:

python"article 1"
"article 3"

Смотрите также

  • метод filter,
    который включает записи в QuerySet
  • метод get,
    который получает одну запись из базы данных
  • метод order_by,
    который сортирует QuerySet по указанным полям
  • метод values,
    который возвращает QuerySet словарей вместо объектов