django-endless-pagination django-pagination регистрирует индекс на странице и всего - PullRequest
0 голосов
/ 24 февраля 2012

Можно ли просмотреть индекс записей на текущей странице и всего?

Например:

Записи 51-100, всего 980

на странице # 2

Возможно, я мог бы использовать {% with object_list.count as "pages_total" %} templatetag, затем много кода .. и {% endwith%} в конце кода .. - сделано до {% paginate %} или {% autopaginate %}но это не кажется хорошим решением.Также он делает еще один вызов БД.

Я не могу найти это в документации, и {{ object_list.count }} дает 50 в этой ситуации.

Ответы [ 3 ]

2 голосов
/ 03 марта 2016

Если вы используете 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-end-pagination

1 голос
/ 13 октября 2014

Люди, как правило, слишком усложняют это.Я обнаружил, что функции current_start_index и current_end_index достаточно хорошо документированы в источнике (но не в реальной документации).

Вот как вы можете их использовать для достижения этой цели.

{{pages.current_start_index}} до {{pages.current_end_index}} из {{pages.total_count}} результатов

Надеюсь, это кому-нибудь поможет: D

0 голосов
/ 24 февраля 2012

Все django-paginator paginators расширяют встроенный класс Django Paginator .Лучшее решение - использовать Paginator.count, чтобы получить общее количество элементов на всех страницах (если вы передаете объект QuerySet в Paginator).Согласно документу:

При определении количества объектов, содержащихся в object_list, Paginator сначала попытается вызвать object_list.count ().Если в object_list нет метода count (), то Paginator откажется от использования len (object_list).Это позволяет объектам, таким как QuerySet Джанго, использовать более эффективный метод count (), когда он доступен.

Так что да, он выполнит другой запрос к БД, но это неизбежно, если вы не знаете числоэлементов.Django будет использовать count(), который использует оператор SELECT COUNT(*), который является лучшим способом получить количество строк.

...