无法使用聚合器查询值的总和

Can't query the sum of values using aggregators

我想对按另一个字段分组的所有现有行的值求和。

这是我的模型结构:

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}]

有什么方法可以仅使用查询集过滤来实现这一点吗?

谢谢!

原来我必须通过 Person 而不是 Answer 进行反向过滤,如下所示:

Person.objects.filter(answer__correct=True).annotate(points=Sum('answer__points'))

现在我正确地得到了每个人的总分。