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 }}
Люди склонны переоценивать это. Я нашел функции 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(*)
заявление, которое является лучшим способом получить количество строк.