2014-03-12 56 views
1

我開始使用草堆,一切似乎是工作,索引的創建,等等。Django的草垛查詢不交

在我的網站的網址是所有類型的「/東西/ someparam/someotherparam'

和我使用ajax調用來獲得每一塊。

現在,我希望乾草堆以這種格式接收查詢。這是我一直在做,到目前爲止

#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」會趕上正則表達式參數'查詢'並將其作爲搜索查詢傳遞給窗體以執行搜索。但是這不起作用(主要是因爲Haystack的視圖不像Django視圖,並且我不確定它們是否可以獲取參數從正則表達式

我試圖使該視圖ListView(或簡單視圖)的子類,但它不起作用。

回答

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