1
我有一个基本的Django干草堆SearchForm工作正常,但现在我试图创建一个自定义搜索表单,其中包括一些额外的字段进行过滤。Django Haystack自定义搜索表单
我跟着上创建自定义表单和视图草堆文件,但是当我尝试查看的形式,我只能得到错误:
ValueError at /search/calibration/
The view assetregister.views.calibration_search didn't return an HttpResponse object. It returned None instead.
不应SearchForm此基础照顾返回一个HttpResponse对象?
forms.py
from django import forms
from haystack.forms import SearchForm
class CalibrationSearch(SearchForm):
calibration_due_before = forms.DateField(required=False)
calibration_due_after = forms.DateField(required=False)
def search(self):
#First we need to store SearchQuerySet recieved after/from any other processing that's going on
sqs = super(CalibrationSearch, self).search()
if not self.is_valid():
return self.no_query_found()
#check to see if any date filters used, if so apply filter
if self.cleaned_data['calibration_due_before']:
sqs = sqs.filter(calibration_date_next__lte=self.cleaned_data['calibration_due_before'])
if self.cleaned_data['calibration_due_after']:
sqs = sqs.filter(calibration_date_next__gte=self.cleaned_data['calibration_due_after'])
return sqs
views.py
from .forms import CalibrationSearch
from haystack.generic_views import SearchView
from haystack.query import SearchQuerySet
def calibration_search(SearchView):
template_name = 'search/search.html'
form_class = CalibrationSearch
queryset = SearchQuerySet().filter(requires_calibration=True)
def get_queryset(self):
queryset = super(calibration_search, self).get_queryset()
return queryset
urls.py
from django.conf.urls import include, url
from . import views
urlpatterns = [
....
url(r'^search/calibration/', views.calibration_search, name='calibration_search'),
....
]
哎哟,这样的小事情仍然赶上我! 修复,导致我另一个错误'对象没有属性'as_view'',这是因为我用'def calibration_search(SearchView):'而不是'class calibration_search(SearchView):' 至少我可以现在正确地查看表单,唯一的问题是无论我搜索什么,它都不会返回任何结果... – TimJ
您是否使用'rebuild_index'命令将数据添加到了搜索索引? – v1k45
我有,我知道索引正在工作,因为我可以使用干草堆浏览器在管理界面中查看它,而我的其他(主)搜索表单仍然可以正常工作。 由于某种原因,我的自定义表单没有得到任何结果。 – TimJ