РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
63 of 818 menu

Метод 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"

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

  • метод filter,
    который возвращает QuerySet с записями, соответствующими условиям
  • метод count,
    который возвращает количество записей в QuerySet
  • метод get,
    который возвращает одну запись из базы данных
  • метод all,
    который возвращает все записи из модели
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить