У меня следующая структура модели в Django.
class Group(Model):
name = CharField()
class Category(Model):
name = CharField()
class User(Model):
name = CharField()
group = ForeignKey(Group)
class Answer(Model):
user = ForeignKey(User)
category = ForeignKey(Category)
answer = BooleanField()
Из этих данных я хочу посчитать, сколько положительных ответов у меня есть для каждой категории и для каждой группы. Примерно так:
results = {}
for category in Category.objects.all():
results[category.name] = Group.objects.annotate(
total=Count(
'user__answer', filter=Q(
user__answer__answer=True, user__answer__category=category
)
)
)
Но есть ли лучший способ сделать это? Можно ли это сделать одним запросом?