Django: Как мне объединить список и набор запросов, разбить их на страницы и перебрать в шаблоне? - PullRequest
0 голосов
/ 23 марта 2019

Я заканчиваю свой список лидеров.В настоящее время я возвращаю 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 и т. Д.

1 Ответ

0 голосов
/ 23 марта 2019

Ответ не был таким сложным: я просто использовал zip для объединения списка и набора запросов. Для нумерации страниц я просто повторил те же самые шаги пагинации для ранга, которые я использовал для набора запросов с новыми именами переменных. Наконец, я перебрал 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 %}
...