Django-Haystack не возвращает результатов в форме поиска
Я использую Django-Haystack с бэкэндом Whoosh. Когда я делаю запрос, я не получаю результатов. Я попытался выполнить шаги по отладке, предложенные в документах Haystack, введя следующее в оболочку Django, и я вижу, что весь текст, который я хочу, был проиндексирован.
from haystack.query import SearchQuerySet
sqs = SearchQuerySet().all()
sqs.count()
sqs[0].text
Моя страница search.html имеет следующий раздел (скопирован прямо из документации):
{% for result in page.object_list %}
<p>
<a href="{{ result.object.url }}">{{ result.object }}</a>
</p>
{% empty %}
<p>No results found.</p>
{% endfor %}
Что еще я могу попробовать?
2 ответа
Ну, я понятия не имею, что происходит, но тогда как в примерах page.object_list
работает, в моем реальном проекте мне нужно было удалить page
префикс. Больно выяснять.
Теперь это работает:
{% for result in object_list %}
<p>
<a href="{{ result.object.url }}">{{ result.object }}</a>
</p>
{% empty %}
<p>No results found.</p>
{% endfor %}
Как нуби, пробующий django-haystack и whoosh и следящий за фрагментами различных руководств по документам haystack, у меня была та же проблема, что и у вас: никаких результатов не было, когда я выполнял EmptySearch(), хотя я переопределил SearchForm, чтобы показать все.
def no_query_found(self):
return self.searchqueryset.all()
Как вы сказали, удаление префикса "page" в шаблоне search.html помогло и стало хорошим временным решением. Однако это стало проблемой, когда пришло время разбивать результаты на страницы. Так что после осмотра, решение было использовать префикс "page_obj" вместо "page", и все работает как ожидалось. Кажется, проблема в том, что в haystack-tutorial предполагается, что объект страницы называется "page", а некоторые версии django его называют "page_obj"? Я уверен, что есть лучший ответ - я просто сообщаю о моих ограниченных результатах.