added initial support for nested tags in product search

This commit is contained in:
Sam
2021-02-15 10:28:29 +00:00
parent eb174f027a
commit ef0f36bff5
2 changed files with 7 additions and 3 deletions

View File

@@ -161,7 +161,8 @@ def product_search(request):
result_set.add(item)
# search in tags
products = Product.objects.filter(tags=chunk)
tags = Product.tags.tag_model.objects.filter(name__icontains=chunk)
products = Product.objects.filter(tags__in=tags)
for item in products:
result_set.add(item)
# search in category
@@ -169,13 +170,16 @@ def product_search(request):
for item in products:
result_set.add(item)
# search in attributes
products = Product.objects.filter(attributes=chunk)
attributes = Product.attributes.tag_model.objects.filter(name__icontains=chunk)
products = Product.objects.filter(attributes__in=attributes)
for item in products:
result_set.add(item)
# extract filters from result_set
filters = extract_search_filters(result_set)
# filters = {}
# serialize and respond
product_serializer = ProductSerializer(result_set, many=True)
return Response(data={"filters": filters, "products": product_serializer.data})
except Exception as e:
import ipdb; ipdb.set_trace()
return Response({"errors": {"details": str(type(e))}}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)