Отфильтровать результаты Django Haystack как QuerySet?

Действительно ли возможно объединить поиск Django Haystack со "встроенными" операциями фильтра QuerySet, конкретно фильтрующими с Q () экземпляры и типы поиска, не поддерживаемые SearchQuerySet? В любом порядке:

haystack-searched -> queryset-filtered

или

queryset-filtered -> haystack-searched

Просмотр документации Django Haystack не дал направлений, как сделать это.

10
задан Danny Beckett 3 May 2013 в 10:15
поделиться

1 ответ

Вы можете отфильтровать свой набор запросов на основе результатов поиска 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});

Не знаю, как это масштабируется, но для небольших наборов результатов (несколько сотен, в моем случае) это работает нормально.

10
ответ дан 4 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: