我有必要计算一支运动队的排名,根据他们所属部门的总分。在
每个队都有一个总分和分配给他们的分区。在
在视图.py在
def seasonstandings(request):
divisions = Team.objects.order_by().values_list('division__name',flat=True).distinct()
stats = WeeklyStats.objects.values('player__team__team_name').annotate(
team=F('player__team__team_name'),
points = Sum('finishes'),
division = F('player__team__division__name')
).order_by('division','-points')
return render(request, 'website/seasonstandings.html', {
'divisions_and_stats': [[division, [stat for stat in stats if stat.division == division]] for division in divisions]
})
我的Django模板代码如下:
在调味品.html在
^{pr2}$现在的问题是,假设我有6支球队,3支在甲级,3支在乙级
因为它是按部门划分的,所以它展示了forloop.计数器在第一个forloop上为1到6。我希望它只对嵌套的forloop执行forloop计数器(第二个用于stats),以便它显示分区A的位置1到3,分区B的位置1到3
我得到的结果是:
Division A
Place Team Points
1 Timberlea Beverage Room 1 7
3 Lakeside Legion 1 4
4 Bedford Legion 3
Division B
Place Team Points
2 Lakeside Legion 2 4
5 Purcells Cove Club 1 2
6 Army Navy Air-Force Club None
当我希望得到这样的结果时:
Division A
Place Team Points
1 Timberlea Beverage Room 1 7
2 Lakeside Legion 1 4
3 Bedford Legion 3
Division B
Place Team Points
1 Lakeside Legion 2 4
2 Purcells Cove Club 1 2
3 Army Navy Air-Force Club None
在进一步研究之后,我认为是我的IF语句导致了这样一个问题:如果除法不匹配,它将跳过一个记录。我想不出办法让它按顺序数数。在
即使您有一个if语句来确保不会显示来自其他分区的统计信息,但是即使},for循环计数器仍然会增加。在
stat.division == division
返回{考虑在Python中计算出位置,并在模板中使用它,而不是尝试在模板中计算出来。 这里有一个可能的解决方案。在
Python(假设您已经对stats集进行了排序):
根据您的偏好/需要,您可以使用
stat.get('division', None)
,这样就不会遇到任何KeyError
异常。在模板:
^{pr2}$最干净的方法是:
我没有机会测试代码。然而,即使它有一个错误,这将是一个良好的开端。在
相关问题 更多 >
编程相关推荐