2017-11-24 8 views
0

django-haystackを使用して固定検索結果セットを表示するページを作成しようとしています。私はすでにhaystackのSearchViewを使って検索するためのページを持っており、デフォルトでは特定の検索結果を表示する2番目のページを作成したいとします。この例では、Fruitを含むすべてのドキュメントを検索します。django-haystackに固定クエリを渡す

ここに私urls.pyです:

from haystack.views import SearchView 
from django.conf.urls import url 
import haystack 

from .search_Queries import custom_query 
from .forms import CustomSearchForm 


urlpatterns = [ 
    url(r'^fruit/', SearchView(form_class=CustomSearchForm, 
      searchqueryset=custom_query)), 
    url(r'^$', SearchView(form_class=haystack.forms.SearchForm, 
             searchqueryset=custom_query), 
    ] 

そして、私はビューのフォームでget_querysetメソッドをオーバーライドすることで初期Fruit検索用語を表示するようにしようとしています - しかし、これはではないようです

forms.py

class CustomSearchForm(SearchForm): 

    def get_queryset(self): 
     queryset = super(CustomSearchForm, self).get_queryset() 
     queryset = queryset.auto_query('Fruit') 
     return queryset 

どのように私はのように、特定の用語の検索結果のセットを表示することができます

それについてに行くための正しい方法django-haystackを使用してビューのデフォルト? URL ^fruit//q=Fruitにリダイレクトされるのではなく、 Fruitの検索結果を直接表示するように別のビューを作成したいとします。

答えて

0

内部SearchQuerySet機能を持つ通常のDjangoのビューについてどのような:

url(r'^myquery/$', views.custom_query), 

views.py内側:

from haystack.query import SearchQuerySet 
from django.http JsonResponse 

def custom_query(request): 
    sqs = SearchQuerySet().auto_query('fruit').load_all() 
    # and do whatever you want with the sqs 
    return JsonResponse({'result': sqs[0].object.pk}) 
関連する問題