Как получить количество элементов в объекте Page?

Я немного узнал о нумерации страниц django отсюда: https://docs.djangoproject.com/en/2.0/topics/pagination/#page-objects

И я хочу знать, как получить количество элементов в определенном объекте страницы.

Я думал примерно так: Page.end_index() - Page.start_index() + 1

Но я думаю, может быть, это не очень хороший или неточный способ получить результат.

Есть ли хороший способ получить правильный результат?


person touchingtwist    schedule 22.03.2018    source источник


Ответы (3)


Что-то отдаленно похожее на:

Paginator(query, objects_per_page, current_page_number)

А затем передайте полученный объект paginator в шаблон.

Внутри инициализации 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}}

Я надеюсь, что это дало вам общее представление о том, как вы можете сделать это чисто.

person Gangani Roshan    schedule 22.03.2018

В шаблоне:

{{ page_obj.paginator.count }} # The total number of objects, across all pages
{{ page_obj.paginator.per_page }} # The number of objects every page
{{ page_obj.paginator.num_pages }} # The total number of pages.
person Ykh    schedule 22.03.2018

Вероятно, len(page.object_list) проще всего.

person Daniel Roseman    schedule 22.03.2018