2013-01-17 46 views
3

我已經正確配置了Haystack中與Solr的拼寫建議的所有內容,但在使用SearchView時,suggestion上下文變量未設置。我已經意識到,這是由於https://github.com/toastdriven/django-haystack/commit/8bf366b6781b22810696b18723da5902ce01e5b7Django Haystack - 未設置拼寫建議上下文變量

if self.results and hasattr(self.results, 'query') and self.results.query.backend.include_spelling: 
    context['suggestion'] = self.form.get_suggestion() 

它在此處出現,只有當有結果,這顯然看起來不正確的變量設置。如果有人能指出我正確的方向,我會非常感激。

回答

1

,你可以覆蓋你的搜索查看的create_response(回滾你提到的補丁):

class MySearchView(SearchView): 
    def create_response(self): 
     (paginator, page) = self.build_page() 

     context = { 
      'query': self.query, 
      'form': self.form, 
      'page': page, 
      'paginator': paginator, 
      'suggestion': None, 
     } 

     if self.results.query.backend.include_spelling: 
      context['suggestion'] = self.form.get_suggestion() 

     context.update(self.extra_context()) 
     return render_to_response(self.template, context, context_instance=self.context_class(self.request)) 
+0

這並不工作,但究竟是在'SearchView'代碼背後的條件的原因是什麼?沒有結果時,不應該特別指出建議嗎? –

+0

我認爲有條件的嘗試是爲了減輕對「無意義」查詢的錯誤建議,如「。」但我同意你的意見,應該提供一個建議。然而,唯一一個真正知道Haystack的開發者爲什麼的人: – furins

+0

然而,沒有提供任何建議只是一種可能的行爲,因此開發人員可能會強迫你重寫create_response來處理像這樣的特殊情況:你決定是否值得提供一個建議,哪種建議等......只是我的兩分錢 – furins