我按照Django website的说明制作了自己的 SearchForm ,但由于某种原因,如果我添加自己的搜索字段,它不会返回任何结果,即使它应该返回结果。
我的 search_indexes.py:
from haystack import indexes
from my.app.models import MyModel
class MyIndexIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.NgramField(document=True, use_template=True)
my_fieldname = indexes.CharField(model_attr='my_fieldname')
def get_model(self):
return MyModel
我的模型:
class MyModel(models.Model):
some_field1 = models.CharField(_('Some field 1'), max_length=255)
some_field2 = models.CharField(_('Some field 2'), max_length=255)
my_fieldname = models.CharField(_('My field name'), max_length=255)
我的搜索表格:
class MySearchForm(SearchForm):
q = forms.CharField(label="Search", max_length=255, required=False)
my_fieldname = forms.CharField(label="MySearchLabel", max_length=255, required=False)
def search(self):
sqs = super(MySearchForm, self).search()
if self.is_valid() and self.cleaned_data['my_fieldname']:
sqs = sqs.filter(my_fieldname=AutoQuery(self.cleaned_data['my_fieldname']))
return sqs
我的 urls.py:
urlpatterns += patterns('haystack.views',
url(r'^search/', SearchView(
form_class=MySearchForm
), name='haystack_search'),
)
我已经运行了 manage.py rebuild_index,但它不影响。我的问题是我在这里做错了什么,为什么我没有得到任何结果。如果我尝试使用 q 参数进行一些查询,结果会正常返回。