Аннотация Django queryset, возвращающая сгруппированные подсчеты
Я использую Django 3.2
models.py
class AwardCategory(models.Model)
name = models.CharField(max_length=16)
slug = models.SlugField(max_length=16, unique=True, db_index=True)
class Award(models.Model):
name = models.CharField(max_length=16)
category = models.ForeignField(AwardCategory, on_delete=models.CASCADE)
class CeremonyAward(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="awards", on_delete=models.CASCADE )
award = models.ForeignKey(Award, related_name="ceremonies", on_delete=models.CASCADE )
Я хочу написать запрос, который возвращает для заданного пользователя (или списка user_ids):
award_category:
name
number_of_awards_in_category
Я знаю, что должен использовать аннотации, но я совсем новичок в аннотациях.
Вот что у меня есть на данный момент:
user_ids = (someuser.id,)
CeremonyAward.objects.filter(user_id__in=user_ids).\
annotate(Count('award__category__slug', distinct=True)).\
prefetch_related('award','award_category')
Как создать запрос, который группирует по award__category
, а затем подсчитывает награды в каждой отдельной категории