Django foorloop счетчик перезапускается на новой странице

В настоящее время я пишу простой тодолист с помощью django. У меня есть представление и html файл для отображения списка элементов, и я хочу, чтобы для каждой задачи в таблице был номер, начиная с 1. Я использую {% footloop.counter %} для этого в моем шаблоне.

Все было хорошо, пока я не написал пагинатор. когда вы выбираете переход на следующую страницу, счетчик снова начинается с 1, поэтому числа в таблице на каждой странице тоже начинаются с единицы. но я хочу, чтобы числа продолжались по порядку до последней страницы. Есть ли какие-нибудь шаблонные теги или фрагменты кода для этого? Заранее спасибо.

вот соответствующие коды:

**list.html:**

    {% for task in tasks %}
                            <tbody>
                            <tr>
                                <th scope="row" class="col-md-1">{{ forloop.counter }}</th>
                                <td class="col-md-2">{{ task.title }}</td>
                                <td class="col-md-3">{{ task.description|truncatewords:10 }}</td>
                                <td class="col-md-2">{{ task.time|date:"H:i" }} - {{ task.time|date:"D d M , Y" }}</td>
                            </tr>
                            </tbody>
    {% endfor %}



<!--Pagination-->

 {% if is_paginated %}
        <div class="container p-4">
            <div class="pagination justify-content-center">
                <span class="step-links">
                    {% if page_obj.has_previous %}
                        <a href="{% url 'home:list' 1 %}">&laquo; first</a>
                        <a href="{% url 'home:list' page_obj.previous_page_number %}">previous</a>
                    {% endif %}

                    <span class="current">
                        Page {{ page_obj.number }} of {{page_obj.paginator.num_pages }}
                    </span>

                    {% if page_obj.has_next %}
                        <a href="{% url 'home:list' page_obj.next_page_number %}">next</a>
                        <a href="{% url 'home:list' page_obj.paginator.num_pages%}">last &raquo;</a>
                    {% endif %}
                </span>
            </div>
        </div>
    {% endif %} 

Вы можете попробовать создать свой собственный тег шаблона и использовать его в шаблоне, как показано ниже :-

@register.filter
def adjust_for_counter(value, page):
    value, page = int(value), int(page)
    counter_value = value + ((page - 1) * settings.RESULTS_PER_PAGE)
    return counter_value

и вызовите его как показано ниже в html :-

{{ forloop.counter|adjust_for_pagination:page }}

Для получения более подробной информации вы можете обратиться к следующей ссылке :-. https://djangosnippets.org/snippets/1391/

Вернуться на верх