Django +用/计算

时间:2015-01-08 15:18:09

标签: django

如何获得'得分'

的结果
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}

1 个答案:

答案 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',因此它返回一个浮点数。