Django QuerySet中每行的平均值

Django QuerySet中每行的平均值,django,django-models,django-queryset,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)

我正在尝试编写一个查询,该查询将返回以下内容:

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

上面的查询没有计算平均值…因此我的查询是错误的。

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

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

很有效,谢谢。我想我看错了,不客气。有关相关示例(每个作者的平均图书评级),请参见上的一节。