Метод count
Метод count применяется к QuerySet и возвращает
общее количество записей в виде целого числа. Он выполняет
запрос к базе данных с использованием функции COUNT,
что делает его более эффективным, чем получение всех
записей с последующим подсчетом через Python. Метод
может применяться как к обычным QuerySet, так и к
отфильтрованным или аннотированным наборам данных.
Синтаксис
queryset.count()
Пример
Давайте подсчитаем общее количество статей в базе данных:
from myapp.models import Article
total = Article.objects.count()
print(total)
Результат выполнения кода:
"5"
Пример
Давайте подсчитаем количество опубликованных статей:
from myapp.models import Article
count = Article.objects.filter(status="published").count()
print(count)
Результат выполнения кода:
"3"
Пример
Давайте подсчитаем количество статей, созданных в 2026 году:
from myapp.models import Article
from datetime import date
count = Article.objects.filter(
created_at__year=2026
).count()
print(count)
Результат выполнения кода:
"2"
Пример
Давайте подсчитаем количество статей для каждой категории с использованием аннотации:
from 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}")
Результат выполнения кода:
"Programming: 4"
"Design: 2"
"Business: 1"
Пример
Давайте подсчитаем количество записей в связанной таблице через reverse relation:
from myapp.models import User
user = User.objects.get(username="john_doe")
articles_count = user.articles.count()
print(articles_count)
Результат выполнения кода:
"7"