django-endless-pagination django-pagination регистрирует индекс на странице и всего

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

Например:

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

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

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

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

3 ответа

Если вы используете 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-документах с бесконечной пагинацией

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

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

Результаты {{ pages.current_start_index }} - {{pages.current_end_index }} из {{ pages.total_count }}

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

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

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

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

Другие вопросы по тегам