Django-haystack查询不在帖子中

时间:2014-03-12 17:36:32

标签: django django-haystack

我开始使用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(或简单视图)的子类,但它不起作用。

1 个答案:

答案 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'])