Метод exists
Метод exists применяется к QuerySet и возвращает булево значение, указывающее, есть ли в запросе хотя бы одна запись. Он выполняет быстрый запрос к базе данных, который возвращает только один бит информации, что делает его более производительным по сравнению с преобразованием QuerySet в список или проверкой его длины. Метод полезен, когда необходимо проверить существование данных без их фактической загрузки.
Синтаксис
Model.objects.filter(**conditions).exists()
Метод вызывается в конце цепочки запросов и возвращает True или False в зависимости от того, найдены ли записи.
Пример . Проверка существования записей по условию
Проверим, есть ли в базе данных статьи со статусом "published":
from myapp.models import Article
# Проверяем наличие опубликованных статей
has_published = Article.objects.filter(status="published").exists()
print(has_published)
Результат выполнения кода:
"True"
Пример . Проверка существования записи с конкретным значением поля
Проверим, существует ли статья с заголовком "Django Basics":
from myapp.models import Article
# Проверяем наличие статьи с точным заголовком
has_article = Article.objects.filter(title="Django Basics").exists()
print(has_article)
Результат выполнения кода:
"False"
Пример . Использование exists с пустым QuerySet
Проверим, есть ли записи для несуществующего автора:
from myapp.models import Article
# Ищем статьи с несуществующим идентификатором автора
has_articles = Article.objects.filter(author_id=9999).exists()
print(has_articles)
Результат выполнения кода:
"False"