-2

是否可以选择查看当前页面上的记录索引和总数?

例如:

记录 51-100,总共 980

在第 #2 页

我也许可以使用{% with object_list.count as "pages_total" %}模板标签,然后使用大量代码.. 并在结束代码处使用 {% endwith %} .. - 在{% paginate %}or之前完成,{% autopaginate %}但这似乎不是一个好的解决方案。它还会进行另一个数据库调用。

我在文档中找不到这个,{{ object_list.count }}在这种情况下给出 50。

4

3 回答 3

4

如果您使用的是 Django Endless Pagination 2.0,您将能够在模板中使用它:

{% load endless %}
{% paginate entries %}
{% for entry in entries %}
    {# your code to show the entry #}
{% endfor %}
{% get_pages %}
Showing entries 
{{ pages.current_start_index }}-{{ pages.current_end_index }} of
{{ pages.total_count }}.
{{ pages }}

所有这些都在Django-endless-pagination 文档中

于 2016-03-03T02:48:21.070 回答
1

人们倾向于把这个复杂化。我发现你的 current_start_index 和 current_end_index 函数在源代码中有很好的记录(但在实际文档中没有)。

以下是您将如何使用它们来实现这一目标。

{{ pages.current_start_index }} 到 {{ pages.current_end_index }} {{ pages.total_count }} 个结果

希望这可以帮助某人:D

于 2014-10-13T13:15:23.657 回答
0

所有 django-pagination 分页器都扩展了 Django 的内置Paginator类。最好的解决方案是使用Paginator.count获取所有页面上的元素总数(如果您将QuerySet对象传递给Paginator)。根据文档:

在确定 object_list 中包含的对象数量时,Paginator 会首先尝试调用 object_list.count()。如果 object_list 没有 count() 方法,那么 Paginator 将回退到使用 len(object_list)。这允许对象,例如 Django 的 QuerySet,在可用时使用更有效的 count() 方法。

所以是的,它会做另一个数据库查询,但如果你不知道元素的数量,这是不可避免的。Django 将使用count()which usesSELECT COUNT(*)语句,这是获取行数的最佳方式。

于 2012-02-24T11:59:59.990 回答