我有一個困難的時間讓自動完成工作與乾草堆和索爾在搜索表單。按照這裏的說明Auto-complete我能夠通過以下方式創建我的索引。自動完成與Django Haystack
class PersonIndex(indexes.RealTimeSearchIndex, indexes.Indexable):
text = CharField(document=True, use_template=True)
first_name = CharField(model_attr='first_name')
last_name = CharField(model_attr='last_name')
first_name_auto = indexes.EdgeNgramField(model_attr='first_name')
def index_queryset(self):
"""Used when the entire index for model is updated."""
return self.get_model().objects.all().order_by('first_name')
def get_model(self):
return Person
隨着我的網址路由設置的方式,我沒有一個查看請求,導致搜索方法的作品。
url(r'^search/person/', search_view_factory(
view_class=SearchView,
template='index.html',
form_class=ModelSearchForm
), name='haystack_search'),
的說明說,我們可以用這種方式進行查詢
from haystack.query import SearchQuerySet
sqs = SearchQuerySet().filter(content_auto=request.GET.get('q', ''))
但做我們把這個SearchQuerySet,我在哪裏不知道重寫什麼,如何正確地修改我的URL路由。我的搜索目前可用這種方式,但我想嘗試使用EdgeNgramField自動完成?
首先感謝了詳細的解答。我能夠遵循搜索方法,它與自動設置的乾草堆大致相同。我現在遇到的問題是我無法取回任何數據。我不知道如何調試,如果我回到基本ModelSearchForm它的工作 – Warz
沒問題。你能澄清你的意思嗎?「能夠按照與自動設置的乾草堆大致相同的搜索方法進行搜索」? 你能給我一個你在'q'中查詢的例子,以及你期望它匹配的數據嗎? –
我的意思是來自haystack/forms.py的例子,基本上使用你在例子中指定的例子。當我開始在文本字段中輸入時,沒有任何反應。當我按下回車鍵時,我收到有關'AutocompleteModelSearchForm'對象沒有屬性的錯誤'cleared_date' – Warz