Как показать правильные номера объектов при использовании django-нумерации - PullRequest
8 голосов
/ 21 февраля 2012

Я использую django-pagination , чтобы разбить список объектов на страницы. Работает без нареканий. Я хочу дать число каждому объекту на странице, и я использую для этого {{forloop.counter}}, но проблема в том, что он начинает счетчик объектов с 1 на каждой странице. Я хотел отобразить фактическое количество объектов.

Скажем, если я разбиваю страницы на 10 объектов на странице, то я хочу присвоить объекту номер 11 для первого объекта на странице 2. Я попытался написать шаблонный фильтр для этого, но почему-то не могу отправить оба request.get.page и {{forloop.counter}} для моей функции фильтра. Я не могу сделать это таким образом.

Буду признателен за любую помощь в направлении.

Ответы [ 3 ]

14 голосов
/ 21 февраля 2012

Вы можете использовать шаблонный тег add, чтобы добавить текущий счетчик из paginator в forloop

{{ forloop.counter|add:paginator.page.start_index }}
6 голосов
/ 21 марта 2017

Я использовал это в своем шаблоне и он работает правильно

{{ page_obj.start_index|add:forloop.counter0 }}

Или вы можете использовать

 {% for obj in obj_list %}
     {{ forlopp.counter0|add:obj_list.start_index }}
 {% endfor %}
1 голос
/ 21 сентября 2016

добавить стартовый индекс paginator для счетчика цикла, начинающегося с нуля

в шаблоне

{% for object in page_objects %}
    ...
    {{ forloop.counter0|add:page_objects.start_index }}
    ...
    ...
{% endfor %}

в представлении

objects = Abcdef.objects.all() # Abcdef is the modal
paginator = Paginator(objects, 10)
page_number = request.GET.get('page')
try:
    page_objects = paginator.page(page_number)
except PageNotAnInteger:
    page_objects = paginator.page(1)
except EmptyPage:
    page_objects = paginator.page(paginator.num_pages)    
data = {
    "page_objects" : page_objects,
}
return render(request, "template/template.html", data)
...