Метод exclude
Метод exclude применяется к QuerySet и возвращает
новый QuerySet, содержащий объекты, которые не соответствуют
переданным условиям. Он работает противоположно методу
filter - включает все записи, кроме тех, которые
удовлетворяют указанным критериям. Аргументы передаются
в виде ключевых параметров, где ключ - это имя поля
с оператором поиска, а значение - условие исключения.
Метод можно вызывать цепочкой для уточнения исключений.
Синтаксис
Model.objects.exclude(**conditions)
Пример
Исключим статьи, у которых статус равен 'draft':
from myapp.models import Article
published_articles = Article.objects.exclude(status='draft')
for article in published_articles:
print(article.title)
Результат выполнения кода:
"article 1"
"article 2"
"article 3"
Пример
Исключим статьи, созданные до 2025 года:
from 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)
Результат выполнения кода:
"article 1"
"article 2"
Пример
Цепочка исключений для выборки статей, у которых рейтинг не ниже 4 и статус не 'archived':
from myapp.models import Article
result = (Article.objects
.exclude(rating__lt=4)
.exclude(status='archived')
)
for article in result:
print(article.title)
Результат выполнения кода:
"article 1"
"article 3"