我正在结束排行榜。我目前返回给定类别的前100名领导者。我需要将当前排名附加到结果中。
起初,我尝试了模板中的forloop.counter变量,但是由于一次只能将10个结果分页,因此每个新页面都会重置计数器。
def leaderboard(request):
stats = Leaderboard.objects.all().order_by('-most_hits')[:100]
rank = list(range(1, 101))
paginator = Paginator(stats, 10)
page = request.GET.get('page')
results = paginator.get_page(page)
context = {'results': results, 'rank': rank}
当前在第2,3页等上返回错误的排名
答案 0 :(得分:0)
答案并不难:我只是使用zip来组合列表和查询集。对于分页,我只是对查询集重复了相同的分页步骤,并使用新的变量名对查询集进行了排序。最后,我遍历了模板中的压缩变量:
def leaderboard(request):
stats = Leaderboard.objects.all().order_by('-most_hits')[:100]
rank = list(range(1, 101))
paginator = Paginator(stats, 10)
page = request.GET.get('page')
stats = paginator.get_page(page)
paginator2 = Paginator(rank, 10)
page2 = request.GET.get('page')
rank = paginator2.get_page(page2)
rank_and_query = zip(rank, stats)
context = {'rank_and_query': rank_and_query}
{% for rank,stats in rank_and_query %}
<li>{{ rank }} : {{ stats.leader }}</li>
{% endfor %}