Пагинация для нескольних запросов с одной модели 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