Django получает количество связанных объектов со значением и добавляет его в аннотацию
Если я хочу указать количество связанных объектов для каждого родительского объекта, я сделаю следующее:
Agent.objects.annotate(deal_count=Count('deal'))
Если мои объекты Deal имеют булево значение closed, как мне аннотировать количество сделок, отмеченных как закрытые?
Вы можете работать с параметром filter=… [Django-doc]:
from django.db.models import Q
Agent.objects.annotate(deal_count=Count('deal', filter=Q(deal__closed=True)))
или если вы хотите аннотировать с обоими подсчетами:
from django.db.models import Q
Agent.objects.annotate(
deal_count=Count('deal'),
closed_deal_count=Count('deal', filter=Q(deal__closed=True))
)