1
검색된 Oscar 제품을 렌더링하고 GET 속성을 사용하여 범주별로 필터링하는 페이지를 작성하려고합니다. 내가 get_queryset을 무시하고 거기에서 내 개체 목록을 짓고 있어요Django Haystack : 객체 속성 필터링
class ProductSearchView(ListView):
model = Product
template_name = "productsearch/product_list.html"
queryset = Product.objects.none()
def get_queryset(self):
word_query_attr = self.request.GET.get('q', None) # word query
sqs = SearchQuerySet().models(Product).filter(Q(title__icontains=word_query_attr) |
Q(category__name__icontains=word_query_attr) |
Q(upc__icontains=word_query_attr) |
Q(description__icontains=word_query_attr))
qs = Product.objects.all()
if self.request.GET.get('cat', None):
cat_attr = self.request.GET.get('cat', None)
category = Category.objects.get(name=cat_attr)
qs = qs.filter(categories__in=category.get_children())
내 질문은 내가 결과 객체에서 필드를 통해 필터링하는 SearchQuerySet()
를 사용할 수있다? (이 경우 Product 객체의 범주)
그렇지 않은 경우 SearchQuerySet()
결과를 사용하여 제품 쿼리 세트를 만들 수있는 효과적인 방법이 있습니까? 내가 ID를
object_ids = [result.object.id for result in sqs]
qs = qs.filter(id__in=object_ids).distinct()
를 통해 필터링 시도했다 그러나 두 가지 문제가 있습니다 : 그것은 확장되지 않습니다 (
here을 언급 한 바와 같이) 및 일부 쿼리는 내가 ~ 900 개 결과 다루고있을 때 매우 느리다.
안녕하세요! 늦은 답변 죄송합니다! 그 말이 맞습니다. 어떻게 생각하지 않았는지 모르겠습니다. 내가 해결책을 시험하게하면 나는 곧바로 당신에게 돌아갈 것이다. –