from haystack.forms import FacetedSearchForm class FacetedProductSearchForm(FacetedSearchForm): def __init__(self, *args, **kwargs): data = dict(kwargs.get("data", [])) self.categories = data.get('category', []) self.producers = data.get('producer', []) super(FacetedProductSearchForm, self).__init__(*args, **kwargs) def search(self): sqs = super(FacetedProductSearchForm, self).search() if self.categories: query = None for category in self.categories: if query: query += u' OR ' else: query = u'' query += u'"%s"' % sqs.query.clean(category) sqs = sqs.narrow(u'category_exact:%s' % query) if self.producers: query = None for producer in self.producers: if query: query += u' OR ' else: query = u'' query += u'"%s"' % sqs.query.clean(producer) sqs = sqs.narrow(u'brand_exact:%s' % query) return sqs