Вы можете сделать это с помощью:
from django.db.models import Count
BlogCategory.objects.annotate(
posts=Count('blogpost')
)
Это приведет к QuerySet
, содержащему BlogCategory
с, где каждый BlogCategory
имеет дополнительный атрибут: posts
, который содержит числосообщения для этой категории.
Или, если вас интересует только QuerySet
словарей:
from django.db.models import Count
BlogCategory.objects.values('id', 'name').annotate(
num_posts=Count('blogpost')
).order_by('id', 'name')
Это приведет к QuerySet
как:
<QuerySet [{'id': 3, 'name': 'cat3', 'posts': 0},
{'id': 2, 'name': 'cat2', 'posts': 2},
{'id': 1, 'name': 'cat1', 'posts': 1}]>