Django+;计算/

Django+;计算/,django,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 def外观(

如何获得“分数”的结果

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
def外观(请求,marcador):
look=get\u object\u或404(look,marcador=marcador)
num\u votos=Voto.objects.filter(look=look)
valores=num_votos.aggregate(soma=Sum('valor'))

分数=valores/num_votos 您可以使用
Avg
计算平均值:

score = Voto.objects.filter(look=look).aggregate(score=Avg('valor'))['score']
代码不起作用的原因是
num\u votos
是一个查询集,而不是一个数字。如果您使用了
score=valores['soma']/num\u votos.count()


如果您使用的是Python 2,
valores['soma']/num\u votos.count()
仍然是一个整数除法,并返回一个整数,而不是实际的平均值。使用
from\uuuuu future\uuuu import division
将其转换为“真除法”,因此它返回一个浮点值

关于
Avg
的观点很好!还请注意,还应使用
valores['soma']
,而不仅仅是
valores