Django + 用 / 计算

Django + calculating with /

如何获得 'score'

的结果
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)值 {'soma': 15}

您可以使用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() 仍然是一个整数除法,return 是一个整数,而不是真正的平均值。使用 from __future__ import division 将其转换为 'true division',因此它 return 是一个浮点数。