2017-08-07 19 views
0

Django HaystackでElasticsearchを使用しています。カスタムビューでは、Django HaystackとElastic Searchで結果が表示されません

私が初めてカスタムビューを作成するまでは、​​の簡単な例の後に行ってください。

search_indexes.py:

class ExperimentIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.CharField(document=True, use_template=True) 
    owner = indexes.CharField(model_attr='owner') 

    def get_model(self): 
     return Experiment 

    def index_queryset(self, using=None): 
     return self.get_model().lastversion_objects.all() 

urls.py:

url(r'^search/?$', NepSearchView.as_view(), name='search_view') 

urls.py前(カスタムビューなし):

url(r'^search/', include('haystack.urls')) 

views.py

class NepSearchView(SearchView): 

    def get_queryset(self): 
     queryset = super(NepSearchView, self).get_queryset() 
     if not self.request.user.is_authenticated and \ 
       self.request.user.groups.filter(name='trustees').exists(): 
      return queryset # (with some filter) 
     else: 
      return queryset 

search.htmlの:

{# ... #} 
{% for result in page.object_list %} 
{% if result.model_name == 'experiment' %} 
{% include 'search/experiments.html' %} 
{% endif %} 
{% if result.model_name == 'study' %} 
{% include 'search/studies.html' %} 
{% endif %} 
{% if result.model_name == 'group' %} 
{% include 'search/groups.html' %} 
{% endif %} 
{% if result.model_name == 'experimentalprotocol' %} 
{% include 'search/experimental_protocol.html' %} 
{% endif %} 
{# ... #} 

まあデフォルトヘイスタックSearchViewを使用しているときNepSearchViewを導入するときながら、事実は、私は、正しいマッチを持っている、page.object_list空で、私はNo results found.をテンプレートに入れます。

私はすでにmanage.py rebuild_indexを実行していましたが、ウェブで広範に検索されていますが、何が欠けているかを説明するものは何も見つかりませんでした。

答えて

1

クエリセットのpage.object_list変数名が存在しないようです。 object_listに「page」というプレフィックスを付けないでください。代わりに

{% for result in page.object_list %} 

使用

{% for result in object_list %} 

は、別の方法としては、この

context_object_name = 'haystack_objects' 

のようなものを追加することによって、ビュー内のカスタム変数名を提供し、テンプレートで使用することができます

{% for result in haystack_objects %} 
関連する問題