Django pagination

50 views
Skip to first unread message

Сергей Ганжела

unread,
Oct 21, 2016, 11:57:51 AM10/21/16
to Django russian
Всем привет!
Подскажите как сделать правильно делаю учебный проект есть вывод элементов на страницу нужно организовать постраничный вывод с(с эти проблем не возникло ) во собственно вюха
{
class BaseProductsList(generic.ListView):

context_object_name = 'products'
template_name = 'product.html'

def get_context_data(self, **kwargs):
context = super(BaseProductsList, self).get_context_data()
context['categories'] = Category.objects.prefetch_related('subcategory').all().order_by('name')
return context

def get_queryset(self):
qs = Product.objects.filter(available=1)
return qs

def get(self, request, **kwargs):
self.paginate_by = self.request.GET.get('show', 8)
return super(BaseProductsList, self).get(request, **kwargs)

}
 на стороне клиента
{
<div class="limit">
<select id="input-limit" class="form-control">
<option value="8" selected="selected">4</option>
<option value="15">8</option>
<option value="25">25</option>
</select>
</div>

}
таким образом можно выбирать колличество елементов на странице вот это что-т у меня не получается подскажите каким образом это организуется?

Владимир Корсун

unread,
Oct 21, 2016, 1:03:45 PM10/21/16
to django-...@googlegroups.com
Во-первых, Сережа, давай поговорим о вью. Ты уже большой мальчик, и
должен был заметить в женерике такой метод как get_paginated_by.
Во-вторых, из селекта в запрос без жаваскрипта этот параметр не
изменить. В-третьи, можно нагуглить уже готовый функционал или
аналогичный.

https://djangopackages.org/grids/g/pagination/

21 октября 2016 г., 17:02 пользователь Сергей Ганжела
<berlu...@gmail.com> написал:
> --
> Вы получили это сообщение, поскольку подписаны на группу "Django russian".
> Чтобы отменить подписку на эту группу и больше не получать от нее сообщения,
> отправьте письмо на электронный адрес
> django-russia...@googlegroups.com.
> Чтобы настроить другие параметры, перейдите по ссылке
> https://groups.google.com/d/optout.

マギクアルセニ

unread,
Oct 23, 2016, 4:00:05 PM10/23/16
to django-...@googlegroups.com
Ну, почему, можно и без JS сделать, просто тогда надо будет ещё на кнопку нажимать, чтобы форму отправить. Надо, чтобы action был адрес view, а method get. Это параметры формы. Плюс надо name добавить, чтобы менялся get-параметр.

А с помощью JS можно сделать, чтобы работало без нажатия на кнопку.


> Чтобы настроить другие параметры, перейдите по ссылке
> https://groups.google.com/d/optout.

--
Вы получили это сообщение, поскольку подписаны на группу Django russian.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес django-russian+unsubscribe@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/d/optout.

Za Ars

unread,
Mar 1, 2017, 6:12:26 AM3/1/17
to Django russian
def get_paginated_by(self):
   
return self.paginate_by if 'GET' not in serf.request.method and 'show' not in self.request.GET else self.request.GET['show']
....

<select name="show" .... > ...



пятница, 21 октября 2016 г., 18:57:51 UTC+3 пользователь Сергей Ганжела написал:
Reply all
Reply to author
Forward
0 new messages