diff --git a/products/utils.py b/products/utils.py index eba2d0b..9b0d7d2 100644 --- a/products/utils.py +++ b/products/utils.py @@ -144,7 +144,11 @@ def ranked_product_search(keyword, shipping_cost=None, discount=None, categories # filter by category if categories is not None: - products_qs = products_qs.filter(category__name__in=categories) + query = Q() + for entry in categories: + query = query | Q(category__name__contains=entry) + products_qs = products_qs.filter(query) + # products_qs = products_qs.filter(category__name__in=categories) # filter by tags if tags is not None: diff --git a/products/views.py b/products/views.py index 0037ab3..682e626 100644 --- a/products/views.py +++ b/products/views.py @@ -163,7 +163,7 @@ def product_search(request): else: discount = None # category = request.GET.get('category', None) - categories = request.query_params.getlist('category') or None + categories = request.query_params.getlist('category[]') or None tags = request.GET.get('tags', None) price_min = request.GET.get('price_min', None) price_max = request.GET.get('price_max', None) @@ -183,7 +183,10 @@ def product_search(request): products_qs = Product.objects.filter(active=True) # filter by category if categories is not None: - products_qs = products_qs.filter(category__name__in=categories) + query = Q() + for entry in categories: + query = query | Q(category__name__contains=entry) + products_qs = products_qs.filter(query) # filter by tags if tags is not None: