Вам нужно сделать что-то умеренно более сложное за кулисами. И обратите внимание, что, хотя я разработчик python, я давно использую werkzeug и jinja2, поэтому мой синтаксис django немного ржавый. Кроме того, это было сухое кодирование (как и в том, что я просто набрал его здесь в браузере) и должен быть протестирован, чтобы убедиться, что он работает по назначению.
Как правило, я создам объект разбивки на страницы и передаю его в объект запроса, который не фильтруется по страницам, вы также можете рассказать ему, сколько страниц и на какой странице вы находитесь.
Так что-то отдаленно напоминает:
Paginator(query, objects_per_page, current_page_number)
, а затем передать полученный объект Paginator в шаблон.
Внутри инициализации постраничной навигации в вы хотите сделать что-то похожее на:
def __init__(self, query, objects_per_page, current_page_number):
self.total = query.count()
self.per_page = objects_per_page
self.current_page_number = current_page_number
self.lower_limit = objects_per_page * current_page_number
self.upper_limit = objects_per_page * (current_page_number + 1)
if self.upper_limit > self.total:
self.upper_limit = self.total
self.objects = query[self.lower_limit - 1:self.upper_limit - 1]
Затем в шаблоне вы могли бы сделать что-то вроде
Showing {{paginator.lower_limit}}-{{paginator.upper_limit}} of {{paginator.total}}
И позже, когда вы будете готовы чтобы перебирать объекты, которые вы могли бы просто перебирать через paginator.objects.
Надеюсь, это даст вам общее представление о том, как вы можете это сделать.
эй! это точно, что я искал. благодаря! – webgonewild
Это было очень полезно - спасибо. Заметьте, что по умолчанию в «ListView» объект называется 'page_obj', а не' page'. – BigglesZX