У меня есть представление, в котором перечислены элементы, соответствующие запросу:
def new_search(request):
search = request.POST.get('search')
models.Search.objects.create(search=search)
products = models.Product.objects.filter(name__icontains=search)
context = {
'search': search,
'products': products,
}
return render(request, 'my_app/new_search.html', context)
, затем в списке элементов после поиска я хочу применить некоторые фильтры. Таким образом, я создал другое представление:
class ProductListing(ListAPIView):
# set the pagination and serializer class
pagination_class = StandardResultsSetPagination
serializer_class = ProductSerializers
def get_queryset(self):
# filter the queryset based on the filters applied
search = self.request.query_params.get('search', None)
queryList = Product.objects.filter(name__icontains=search)
if country:
queryList = queryList.filter(country=country)
if variety:
queryList = queryList.filter(variety=variety)
if province:
queryList = queryList.filter(province=province)
if region:
queryList = queryList.filter(region=region)
# sort it if applied on based on price/points
if sort_by == "price":
queryList = queryList.order_by("price")
return queryList
проблема в том, что self.request.query_params.get('search', None)
не возвращает ни один метод сообщения с search
не предоставляется.
Что лучше всего делать в таких ситуациях? Я понял, что для поддержки API без сохранения состояния я не могу сохранить поиск где-то, а затем повторно использовать его для фильтра, но мне нужно снова отправить POST поиск в фильтр (ProductListing). Как я могу это сделать?