मैं, मैं सिर्फ भूसे के ढेर के दस्तावेज़ से संशोधित Django भूसे के ढेर का उपयोग कर एक कस्टम खोज प्रपत्र बनाने के लिए कोशिश कर रहा हूँ:Django कस्टम प्रपत्र भूसे के ढेर
forms.py
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()
# 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
रहे हैं:
from django import forms
from haystack.forms import HighlightedModelSearchForm
class CustomSearchForm(HighlightedModelSearchForm):
title = forms.CharField(max_length = 100, required = False)
content = forms.CharField(max_length = 100, required = False)
date_added = forms.DateField(required = False)
post_by = forms.CharField(max_length = 100, required = False)
def search(self):
sqs = super(CustomSearchForm, self).search()
if self.cleaned_data['post_by']:
sqs = sqs.filter(content = self.cleaned_data['post_by'])
if self.cleaned_data['title']:
sqs = sqs.filter(content = self.cleaned_data['title'])
if self.cleaned_data['content']:
sqs = sqs.filter(content = self.cleaned_data['content'])
if self.cleaned_data['date_added']:
sqs = sqs.filter(content = self.cleaned_data['date_added'])
return sqs
हैस्टैक .urls:
urlpatterns = patterns('haystack.views',
url(r'^$', search_view_factory(view_class = SearchView, form_class = CustomSearchForm), name='haystack_search'),
)
जब मैं यूआरएल के लिए जाना है, यह कहते हैं: खोज पर/AttributeError/
'CustomSearchForm' ऑब्जेक्ट कोई विशेषता 'cleaned_data'
तुम लोग मेरी मदद कर सकते है? thx
फिर मैं खोज विधि पर टिप्पणी करने की कोशिश करता हूं, लेकिन जब मैं कस्टम फ़ील्ड में कोई शब्द सबमिट करता हूं, तो परिणाम हमेशा कुछ भी नहीं होता है, केवल तभी जब मैं गैर-कस्टम फ़ील्ड में कोई शब्द सबमिट करता हूं, तो मैं परिणाम को प्राप्त कर सकता हूं, पहले से ही यह सब दिन समझने की कोशिश की है, कृपया मदद करें
यहां एक बेहतर तरीका है, 'यदि इंस्टेंसेंस (वर्ग, एम्प्टीशर्चक्वायरसेट): वापसी एसक्यूएस' सुपर() 'कॉल के बाद करते हैं और सभी 'is_valid()' – nitely