Я хочу суммировать значения всех существующих группировок строк другим полем.Невозможно запросить сумму значений с помощью агрегаторов
Вот моя модель структуры:
class Answer(models.Model):
person = models.ForeignKey(Person)
points = models.PositiveIntegerField(default=100)
correct = models.BooleanField(default=False)
class Person(models.Model):
# irrelevant model fields
Пример набора данных:
Person | Points
------ | ------
4 | 90
3 | 50
3 | 100
2 | 100
2 | 90
Вот мой запрос:
Answer.objects.values('person').filter(correct=True).annotate(points_person=Sum('points'))
И результат (вы можете увидеть, что все person
значения разделены):
[{'person': 4, 'points_person': 90}, {'person': 3, 'points_person': 50}, {'person': 3, 'points_person': 100}, {'person': 2, 'points_person': 100}, {'person': 2, 'points_person': 90}]
Но то, что я хочу (сумма баллов по каждому person
):
[{'person': 4, 'points_person': 90}, {'person': 3, 'points_person': 150}, {'person': 2, 'points_person': 190}]
Есть ли способ для достижения этой цели, используя только QuerySet фильтрацию?
Спасибо!