QuerySet中每行的平均值

时间:2014-07-16 19:54:37

标签: django django-models django-queryset

我正在尝试编写一个返回类似的查询:

{idBlock: average_score, idBlock: average_score...}

或带值:

{1: 3.12, 2: 4.18...}

我的模型看起来像这样:

class MyModel(models.Model):
    idBlock = models.ForeignKey(Block)
    score = models.PositiveIntegerField(blank=False, null=False)

可能会有数千个块ID,每个ID有几十个分数,可能有数千个分数。我尝试过各种来源的各种查询,这个问题最接近我需要的解决方案:

MyModel.objects.annotate(average_score=Avg('score')).values('idBlock','score')

返回:

{'idBlock': 6L, 'score': 6L}, {'idBlock': 6L, 'score': 9L}, {'idBlock': 7L, 'score': 5L}, {'idBlock': 7L, 'score': 8L}, {'idBlock': 8L, 'score': 6L}

以上查询不计算平均值...所以我的查询错误。

1 个答案:

答案 0 :(得分:0)

你应该注释的是Block,而不是MyModel。尝试:

Block.objects.annotate(average_score=Avg('mymodel__score'))
             .values('id','average_score')