Python Django Haystack自定义表单自定义属性不返回任何结果
我已经按照中的说明制作了自己的搜索表单,但由于某种原因,如果我添加自己的搜索字段,它不会返回任何结果,即使它应该返回结果 My search_indexes.py:Python Django Haystack自定义表单自定义属性不返回任何结果,python,django,python-2.7,django-haystack,Python,Django,Python 2.7,Django Haystack,我已经按照中的说明制作了自己的搜索表单,但由于某种原因,如果我添加自己的搜索字段,它不会返回任何结果,即使它应该返回结果 My search_indexes.py: from haystack import indexes from my.app.models import MyModel class MyIndexIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.NgramField(document=Tru
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
My URL.py:
urlpatterns += patterns('haystack.views',
url(r'^search/', SearchView(
form_class=MySearchForm
), name='haystack_search'),
)
我已运行manage.py rebuild_index,但它不会影响。我的问题是我做错了什么,为什么我没有得到任何结果。如果我尝试使用q参数进行一些查询,结果会正常返回。super(MySearchForm,self)。search()
使用默认字段名content
执行自动查询()。。。由于您尚未定义这样的字段,因此它不会返回任何结果。。。因此,我不会执行super
调用,而是使用类似于-but-but将fieldname
传递给:auto_查询(querystring,fieldname='text')
的实现进行替换
如果要在模板中搜索,请确保模板定义正确。(如果要链接多个filter()
调用,则它们将组合为usind和)
此外,根据您使用的搜索引擎,它可能会为您提供一个前端,您可以独立于haystack检查数据是否正确索引