我正在使用 haystack 对我的 Person 模型针对所有选定的过滤器属性执行简单的搜索查询。我决定尝试分面搜索表单并创建了一个通用的 TemplateView SearchView
。
class SearchView(TemplateView):
template_name = "index.html"
results = EmptySearchQuerySet()
form_class = FacetedSearchForm
form = None
query = ''
selected_people = None
def get(self, request, **kwargs):
self.request = request
self.query = self.get_query()
if self.form.is_valid():
self.results = self.get_results()
context = self.get_context_data(request, **kwargs)
if request.is_ajax() or request.GET.get('ajax'):
self.template_name = 'search/Taleebo/search_results.html'
return self.render_to_response(context)
def get_query(self):
return self.request.GET.get('q')
def get_results(self):
return self.form.search()
所有的路由都工作正常,但是当我的get
方法被调用时,它就失败了
self.form.is_valid()
有一个错误说NoneType' object has no attribute 'is_valid'
我正在使用默认的 form_class,所以不应该定义该属性吗?
编辑:
我现在正在尝试使用 haystack 提供的 SearchView,is_valid 不再是问题,但我没有从“结果”中获取任何记录。我改变了我的 urls.py 看起来像这样
url(r'^search/person/', search_view_factory(
view_class=SearchView,
template='index.html',
form_class=ModelSearchForm
), name='haystack_search'),