我开始使用Haystack,一切似乎都在工作,索引已经创建等等。
我网站上的网址都是'/ something / someparam / someotherparam'的类型
我使用ajax调用将每个部分组合在一起。
现在,我希望haystack以这种格式接收查询。这是我到目前为止所做的事情
#Nothing special here, default stuff
class ProjectSearchForm(SearchForm):
def search(self):
# First, store the SearchQuerySet received from other processing.
sqs = super(ProjectSearchForm, self).search()
if not self.is_valid():
return self.no_query_found()
return sqs
#Same here, nothing much, except that I'm trying to grab the query from a view parameter
class ProjectsSearchView(SearchView):
template = 'projects/_project_archive.html'
searchqueryset = SearchQuerySet().models(Project)
form_class = ProjectSearchForm
def get_query(self):
return self.kwargs['query']
在我的urls.py中,我正在尝试做这样的事情:
url(
regex=r'search/(?P<query>[-\w\d\+]+)$',
view=ProjectsSearchView.as_view(),
),
所以,我希望“ProjectSearchView”会捕获正则表达式参数'query'并将其作为搜索查询传递给表单以执行搜索..但这不起作用(基本上因为Haystack的观点不是像django视图,我不确定他们是否可以从正则表达式中获取参数。
我尝试将视图作为ListView(或简单视图)的子类,但它不起作用。
答案 0 :(得分:1)
我最终编写了自己的观点而不是继承Haystack的观点。这是:
class ProjectsSearchView(ListView):
template_name = 'projects/_project_archive.html'
searchqueryset = SearchQuerySet().models(Project)
def get_queryset(self):
return self.searchqueryset.filter(content=self.kwargs['query'])