Метод count

Метод count применяется к QuerySet и возвращает общее количество записей в виде целого числа. Он выполняет запрос к базе данных с использованием функции COUNT, что делает его более эффективным, чем получение всех записей с последующим подсчетом через Python. Метод может применяться как к обычным QuerySet, так и к отфильтрованным или аннотированным наборам данных.

Синтаксис

pythonqueryset.count()

Пример

Давайте подсчитаем общее количество статей в базе данных:

pythonfrom myapp.models import Article

total = Article.objects.count()
print(total)

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

python"5"

Пример

Давайте подсчитаем количество опубликованных статей:

pythonfrom myapp.models import Article

count = Article.objects.filter(status="published").count()
print(count)

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

python"3"

Пример

Давайте подсчитаем количество статей, созданных в 2026 году:

pythonfrom myapp.models import Article
from datetime import date

count = Article.objects.filter(
  created_at__year=2026
).count()
print(count)

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

python"2"

Пример

Давайте подсчитаем количество статей для каждой категории с использованием аннотации:

pythonfrom myapp.models import Article, Category
from django.db.models import Count

categories = Category.objects.annotate(
  article_count=Count("article")
)
for category in categories:
  print(f"{category.name}: {category.article_count}")

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

python"Programming: 4"
"Design: 2"
"Business: 1"

Пример

Давайте подсчитаем количество записей в связанной таблице через reverse relation:

pythonfrom myapp.models import User

user = User.objects.get(username="john_doe")
articles_count = user.articles.count()
print(articles_count)

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

python"7"

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

  • метод filter,
    который фильтрует записи в QuerySet
  • метод exists,
    который проверяет наличие записей в QuerySet
  • метод aggregate,
    который вычисляет агрегатные значения для QuerySet
  • метод annotate,
    который добавляет аннотации к каждой записи в QuerySet