search improvement
This commit is contained in:
@@ -1,10 +1,12 @@
|
|||||||
import logging
|
import logging
|
||||||
import csv
|
import csv
|
||||||
import datetime
|
import datetime
|
||||||
|
import operator
|
||||||
|
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core import serializers
|
from django.core import serializers
|
||||||
|
from django.db.models import Q
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
@@ -141,23 +143,16 @@ def product_search(request):
|
|||||||
result_set = set()
|
result_set = set()
|
||||||
for chunk in chunks:
|
for chunk in chunks:
|
||||||
# search in name
|
# search in name
|
||||||
products = Product.objects.filter(name=chunk)
|
name_search = Q(name=chunk)
|
||||||
for item in products:
|
description_search = Q(description=chunk)
|
||||||
result_set.add(item)
|
tags_search = Q(tags=chunk)
|
||||||
# search in description
|
category_search = Q(category=chunk)
|
||||||
products = Product.objects.filter(description=chunk)
|
attributes_search = Q(attributes=chunk)
|
||||||
for item in products:
|
|
||||||
result_set.add(item)
|
query_list = [name_search, description_search, tags_search, category_search, attributes_search]
|
||||||
# search in tags
|
|
||||||
products = Product.objects.filter(tags=chunk)
|
products = Product.objects.filter(reduce(operator.or_, query_list))
|
||||||
for item in products:
|
|
||||||
result_set.add(item)
|
|
||||||
# search in category
|
|
||||||
products = Product.objects.filter(category=chunk)
|
|
||||||
for item in products:
|
|
||||||
result_set.add(item)
|
|
||||||
# search in attributes
|
|
||||||
products = Product.objects.filter(attributes=chunk)
|
|
||||||
for item in products:
|
for item in products:
|
||||||
result_set.add(item)
|
result_set.add(item)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user