Изменить количество элементов на странице или просмотреть все в представлении с помощью paginator в django - PullRequest
1 голос
/ 21 июля 2011

Я использую django 1.3, и у меня есть представление, которое принимает разбитый на страницы набор запросов (установлен для использования 50 объектов).Вот соответствующая часть метода get_context_data () в представлении:

    #build paginator for querysets
    paginated_scanned_assets = Paginator(scanned_assets_qs, 50)

    #get the specified page
    try:
        page_num = int(self.request.GET.get('page', '1'))
    except ValueError:
        page_num = 1

    #get a paginated list of object
    try:
        scanned_assets = paginated_scanned_assets.page(page_num)
    except (EmptyPage, InvalidPage):
        scanned_assets = paginated_scanned_assets.page(paginated_scanned_assets.num_pages)

Шаблон, который он отображает, просто создает таблицу из набора запросов и имеет ссылки для перехода на следующую и предыдущую страницы.

То, что я хочу сделать, это либо иметь ссылку для просмотра всех, которая будет просто отображать набор запросов без разбивки на страницы, либо иметь возможность изменять количество объектов на странице (что приведет к воссозданию нумератора страниц).Я не очень много работал с представлениями или дизайном, поэтому не уверен, как это сделать.Это то, что я могу сделать с js, и если да, то как?В противном случае я могу просто сделать это с Django и HTML?Это может быть очень просто, я просто неопытен и нигде не нашел ни ответа, ни примера.

Спасибо!

1 Ответ

3 голосов
/ 21 июля 2011

То, что вы хотите сделать, это добавить необязательный параметр в представление под названием «page_size», а затем сделать что-то вроде:

def your_view(request, ..., page_size=50):
  scanned_assets_qs = # get your scanned_assets QuerySet

  if page_size == -1:
    page_size = scanned_assets_qs.count()

  paginator = Paginator(scanned_assets_qs, page_size)

Затем вы можете передать произвольный page_size и -1 дляпросмотреть всю страницу (я бы сделал это с соответствующими URL, плюс URL для / viewall /, который передается в -1 независимо от того, что)

...