Пагинация для нескольних запросов с одной модели Django

Мне нужно реализовать пагинацию для разных запросов с одной модели. Я не можу понять,как мне перетать в Paginator нужный queryset. Как мне это сделать?

def get_pagination(self):
    global products
    query = self.request.GET.get('search')
    category = self.get_object()
    order = self.request.GET.get('orderby')
    url_kwargs = {}
    if not query and not self.request.GET:
        products = Product.objects.filter(category=category)
    if order:
        products = Product.objects.filter(category=category).order_by(f'{order}')
    if query:
        products = category.product_set.filter(Q(title__icontains=query))
    for item in self.request.GET:
        if len(self.request.GET.getlist(item)) > 1:
            url_kwargs[item] = self.request.GET.getlist(item)
        else:
            url_kwargs[item] = self.request.GET.get(item)
    q_condition_queries = Q()
    for key, value in url_kwargs.items():
        if isinstance(value, list):
            q_condition_queries.add(Q(**{'value__in': value}), Q.OR)
        else:
            q_condition_queries.add(Q(**{'value': value}), Q.OR)
    pf = ProductFeatures.objects.filter(
        q_condition_queries
    ).prefetch_related('product', 'feature').values('product_id')
    products = Product.objects.filter(id__in=[pf_['product_id'] for pf_ in pf])
    paginator = Paginator(products, 2)  # paginate_by
    page = self.request.GET.get('page')
    page_obj = paginator.get_page(page)
    return page_obj
Вернуться на верх