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 是一个浮点数。
如何获得 '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 是一个浮点数。