使用django-pagination时如何显示正确的对象编号

时间:2012-02-21 07:07:44

标签: django django-templates django-pagination

我正在使用 django-pagination 对我的对象列表进行分页。它运作完美。我想给页面上的每个对象一个数字,我正在使用{{forloop.counter}},但问题是它在每页上从1开始对象计数。我想显示实际的对象数。

如果我每页分页10个对象,那么我想在第2页上将第一个对象的对象编号设为11。我尝试为此编写模板过滤器,但不知怎的,我无法同时发送{{1 }和request.get.page到我的过滤功能。我无法这样做。

任何有关方向的帮助都将受到赞赏。

3 个答案:

答案 0 :(得分:14)

您可以使用add模板标记将当前计数从分页器添加到forloop

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

答案 1 :(得分:6)

我在模板中使用了它并且它正常工作

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

或者您可以使用

 {% for obj in obj_list %}
     {{ forlopp.counter0|add:obj_list.start_index }}
 {% endfor %}

答案 2 :(得分:1)

使用for循环计数器从零开始添加paginator start index

模板中的

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