Действительно ли возможно объединить поиск Django Haystack со "встроенными" операциями фильтра QuerySet, конкретно фильтрующими с Q () экземпляры и типы поиска, не поддерживаемые SearchQuerySet? В любом порядке:
haystack-searched -> queryset-filtered
или
queryset-filtered -> haystack-searched
Просмотр документации Django Haystack не дал направлений, как сделать это.
Вы можете отфильтровать свой набор запросов на основе результатов поиска Haystack, используя PK объектов:
def view(request):
if request.GET.get('q'):
from haystack import ModelSearchForm
form = ModelSearchForm(request.GET, searchqueryset=None, load_all=True)
searchqueryset = form.search()
results = [ r.pk for r in searchqueryset ]
docs = Document.objects.filter(pk__in=results)
# do something with your plain old regular queryset
return render_to_response('results.html', {'documents': docs});
Не знаю, как это масштабируется, но для небольших наборов результатов (несколько сотен, в моем случае) это работает нормально.