如何获得'得分'
的结果def look(request, marcador):
look = get_object_or_404(Look, marcador=marcador)
num_votos = Voto.objects.filter(look=look)
valores = num_votos.aggregate(soma=Sum('valor'))
score = valores / num_votos ??? <- error
(PDB)num_votos [,,,,,]
(PDB)VALORES {&#39; soma&#39;:15}
答案 0 :(得分:2)
您可以使用Avg
来计算平均值:
score = Voto.objects.filter(look=look).aggregate(score=Avg('valor'))['score']
您的代码不起作用的原因是因为num_votos
是一个查询集,而不是一个数字。如果您使用score = valores['soma'] / num_votos.count()
,它就会奏效。
如果您使用的是Python 2,valores['soma'] / num_votos.count()
仍然是整数除法并返回整数,而不是实际平均值。使用from __future__ import division
将其转换为'true division',因此它返回一个浮点数。