2016-04-16 16 views
2

Ich benutze Django-Haystack mit Whoosh Backend. Wenn ich eine Abfrage mache, bekomme ich keine Ergebnisse. Ich habe die in den Haystack-Dokumenten vorgeschlagenen Debugging-Schritte ausprobiert, indem ich Folgendes in eine Django-Shell eingegeben habe, und ich kann sehen, dass der gesamte Text, den ich haben möchte, indiziert wurde.Django-Haystack liefert keine Ergebnisse im Suchformular

from haystack.query import SearchQuerySet 
sqs = SearchQuerySet().all() 
sqs.count() 
sqs[0].text 

Meine search.html Seite hat den folgenden Abschnitt (gerade aus der Dokumentation kopiert):

{% for result in page.object_list %} 
    <p> 
     <a href="{{ result.object.url }}">{{ result.object }}</a> 
    </p> 
{% empty %} 
    <p>No results found.</p> 
{% endfor %} 

Was kann ich noch versuchen?

Antwort

2

Nun, ich habe keine Ahnung, was passiert, aber während in den Beispielen page.object_list funktioniert, musste ich in meinem realen Projekt die page Präfix entfernen. Schmerzhaft um herauszufinden.

Jetzt funktioniert das:

{% for result in object_list %} 
    <p> 
    <a href="{{ result.object.url }}">{{ result.object }}</a> 
    </p> 
{% empty %} 
    <p>No results found.</p> 
{% endfor %} 
1

Als noobie auszuprobieren django-Heuhaufen und Zischen, und Fragmente von verschiedenen Tutorials auf Heuhaufen der docs folgende, ich hatte das gleiche Problem wie Sie: Keine Ergebnisse zeigen nach oben als ich eine EmptySearch() erstellte, obwohl ich SearchForm überschrieben hatte, um alle anzuzeigen.

def no_query_found(self): 
    return self.searchqueryset.all() 

Wie Sie sagen, hat die „Seite“ Präfix auf der search.html Vorlage Entfernen der Trick, und war eine gute Notlösung. Es wurde jedoch ein Problem, als es an der Zeit war, die Ergebnisse zu paginieren. Nachdem wir uns also umgesehen hatten, bestand die Lösung darin, das Präfix "page_obj" anstelle von "page" zu verwenden, und alles funktioniert wie erwartet. Es scheint, das Problem ist, dass das Heuhaufen-Tutorial davon ausgeht, dass das Seitenobjekt "page" heißt, während bestimmte Versionen von django es "page_obj" nennen? Ich bin mir sicher, dass es eine bessere Antwort gibt - ich berichte nur meine begrenzten Ergebnisse.

Verwandte Themen