encapsulated search functionality

This commit is contained in:
Sam
2021-02-18 10:52:50 +00:00
parent 8c9fbfd77a
commit c9a4513dd8
2 changed files with 25 additions and 15 deletions

View File

@@ -1,5 +1,10 @@
import logging
from django.db.models import Q
from products.models import Product
def extract_search_filters(result_set):
"""
@@ -49,3 +54,21 @@ def extract_search_filters(result_set):
except Exception as e:
logging.error(f'Extacting filters for {item}')
return filter_dict
def find_related_products(keyword):
# search in tags
tags = Product.tags.tag_model.objects.filter(name__icontains=keyword)
# search in category
categories = Product.category.tag_model.objects.filter(name__icontains=keyword)
# search in attributes
attributes = Product.attributes.tag_model.objects.filter(name__icontains=keyword)
# unified tag search
products_qs = Product.objects.filter(
Q(name__icontains=keyword)|
Q(description__icontains=keyword)|
Q(tags__in=tags)|
Q(category__in=categories)|
Q(attributes__in=attributes)
)
return products_qs