Фильтр набора запросов Dango и разбивка на страницы

#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.