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

Я использую 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? Это может быть очень просто, я просто довольно неопытен и нигде не нашел ответа или примера.

Спасибо!


person coaxmetal    schedule 20.07.2011    source источник


Ответы (1)


Что вы хотите сделать, так это добавить необязательный параметр в представление под названием «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)

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

person Todd Berman    schedule 21.07.2011