Django фильтрация по нескольким страницам
Я все еще новичок в Django и веб-разработке, извините, если вопрос глупый. В настоящее время у меня есть строка поиска и выпадающий список для категории, который затем отправляет набор запросов в шаблон результатов. Шаблон результатов также имеет фильтры для дальнейшего уточнения поиска, например, ценовой диапазон, состояние и для сортировки. Мне интересно, как лучше всего реализовать эти фильтры без потери набора запросов с предыдущей страницы
views.py
class ProductListView(ListView):
model = Product
template_name = "products/index.html"
context_object_name = 'products'
paginate_by = 10
class ProductSearch(ListView):
model = Product
template_name = "products/ad-list-view.html"
context_object_name = "products"
def get_context_data(self, **kwargs):
context = super(ProductSearch, self).get_context_data(**kwargs)
Product_list = super().get_queryset()
context.update({
'filter': ProductFilter(
self.request.GET, queryset=Product_list)
})
return context
def get_queryset(self):
search_query = ''
if self.request.GET.get('search_query') or self.request.GET.get('category'):
search_query = self.request.GET.get('search_query')
option = self.request.GET.get('category')
category = Category.objects.filter(Name__icontains=option)
ducts = Product.objects.distinct().filter(
Q(Product_name__icontains=search_query),
category__in=category,)
return ducts
return search_query
index.py
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-12 col-md-12 align-content-center">
<form method="GET" action="{% url 'Product-search' %}">
<div class="form-row">
<div class="form-group col-md-4">
<input type="text" class="form-control my-2 my-lg-1" id="inputtext4" placeholder="What are you looking for"
name="search_query" value="{{search_query}}">
</div>
<div class="form-group col-md-3">
<select name="category" value= "{{category}}" class="w-100 form-control mt-lg-1 mt-md-2">
<option value= null>Category</option>
{% for category in Category_list %}
<option >{{category.Name}}</option>
{% endfor %}
</select>
</div>
<div class="form-group col-md-3">
<input type="text" class="form-control my-2 my-lg-1" id="inputLocation4" placeholder="Location">
</div>
<div class="form-group col-md-2 align-self-center">
<button type="submit" class="btn btn-primary">Search Now</button>
</div>
</div>
</form>
</div>
</div>
</div>
ad-list-view
filters.py
class ProductFilter(django_filters.FilterSet):
class Meta:
model = Product
fields = {
'Product_name': ['icontains', ],
}
``