Try ModelSearchForm。這種形式增加了新的領域來形成。它遍歷當前SearchSite的所有註冊模型,併爲每個模塊提供一個複選框。如果沒有選擇模型,所有類型將顯示在結果中。從文檔
定製表單示例,並且可以被轉換爲ModelSearchForm簡單地從ModelSearcForm
from django import forms
from haystack.forms import SearchForm
class DateRangeSearchForm(SearchForm):
start_date = forms.DateField(required=False)
end_date = forms.DateField(required=False)
def search(self):
# First, store the SearchQuerySet received from other processing.
sqs = super(DateRangeSearchForm, self).search()
if not self.is_valid():
return self.no_query_found()
# Check to see if a start_date was chosen.
if self.cleaned_data['start_date']:
sqs = sqs.filter(pub_date__gte=self.cleaned_data['start_date'])
# Check to see if an end_date was chosen.
if self.cleaned_data['end_date']:
sqs = sqs.filter(pub_date__lte=self.cleaned_data['end_date'])
return sqs
DATERANGE SearchForm inherting是一個定製的形式並且具有更多的靈活性,因爲它有上側顯影劑更多的控制。創建自己的表單最簡單的方法是從SearchForm(或所需的父項)繼承並擴展搜索方法。通過這樣做,您可以節省大部分正確處理數據的工作,並保持API與SearchView的兼容性。
更多幫助,可以從這個問題django haystack custom form
您所使用的搜索表單? – Mubasher 2014-09-24 06:30:55
ModelSearchForm。這種形式增加了新的領域來形成。它遍歷當前SearchSite的所有註冊模型,併爲每個模塊提供一個複選框。如果沒有選擇模型,所有類型將顯示在結果中。 – Mubasher 2014-09-24 06:33:21
@Mubasher請將此擴展爲一個答案,因爲您顯然應該得到賞金! – felixphew 2014-09-24 06:34:54