#python #django #django-models #pagination #django-queryset
#python #django #django-модели #разбивка на страницы #django-набор запросов
Вопрос:
Есть ли какой-либо способ заставить django paginator работать с фильтрацией и сортировкой без участия django-filter. Теперь это мой код:
def check_filters(post, content):
if some_filter := post.gelist("some_filter"):
content = content.filter(some_filter=some_filert)
if ....basically the same ....
if ...basically the same ....
return content
def some_fun(response):
n = SomeQueryset.objects.all();
if post:= response.POST:
n = check_filters(post, n, )
paginator = Paginator(n, per_page=12)
page_number = response.GET.get('page')
page_obj = paginator.get_page(page_number)
return render(response, 'store/store.html', {"page_obj": page_obj, "colors": get_colors()})
Комментарии:
1. Что не работает с текущим подходом?
2. разбивка на страницы сбрасывает фильтры и наоборот
3. @EvegeniGenchev: но обычно фильтрация выполняется через строку запроса, а не через POST-запрос, в противном случае вам нужно будет сделать еще один POST-запрос для следующих страниц.
4. Я последовал примеру django по умолчанию и сделал это с помощью ajax. Страница не обновляется, и фильтры не сбрасываются. Вам просто нужно поиграть с этим с помощью некоторого JavaScript.