Можно ли использовать агрегацию в аннотации queryset?

Я использую annotate на кверисете django:

class MyModel(models.Model):
   my_m2m = models.ManytoManyField()

my_qs = MyModel.objects.all().annotate(total_m2m=Count('my_m2m'))

Это дает желаемый результат. Например:

>>> my_qs[0].total_m2m
>>> 3

Как использовать aggregate для подсчета общего количества my_m2m в наборе запросов? Например,

>>> my_qs.aggregate_m2m
>>> 9

Вы можете подвести итог, таким образом:

from django.db.models import Count, Sum


MyModel.objects.annotate(total_m2m=Count('my_m2m')).aggregate(
    total=Sum('total_m2m')
)

но здесь более логично агрегировать сразу:

from django.db.models import Count


MyModel.objects.aggregate(
    total=Count('my_m2m')
)
Вернуться на верх