2012-02-21 4 views
8

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

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

Любая помощь по направлению будет оценена по достоинству.

ответ

14

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

{{ forloop.counter|add:paginator.page.start_index }} 
+0

Я получаю следующее сообщение об ошибке 'Поймали VariableDoesNotExist при рендеринге: Failed поиск по ключевым [start_index] в u''' – Sachin

+0

, как это Paginator перешел от представления к шаблону? –

+0

Я использую приложение django-pagination, которое делает разбиение на страницы в самом шаблоне, я не использую paginator – Sachin

1

дополнить для счетчика цикла, начиная с нулевого

в шаблоне

{% 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) 
2

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

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