Python Django haystack:在添加自动完成所需的“content\u auto”行后,重建索引失败(haystack.exceptions.SearchFieldError)

Python Django haystack:在添加自动完成所需的“content\u auto”行后,重建索引失败(haystack.exceptions.SearchFieldError),python,autocomplete,django-haystack,whoosh,Python,Autocomplete,Django Haystack,Whoosh,我试图实现只搜索一个单词的一部分的结果(如果我没有弄错的话,根据Haystack文档称之为autocomplete) 示例: 搜索“gol” 结果“金鱼” 我试过什么? 按照中的要求,我在索引类中添加了以下行: content_auto = indexes.EdgeNgramField(model_attr='content') 然后做了python manage.py重建\u索引 但是,重建索引时产生了一个错误haystack.exceptions.SearchFieldError:模型“”

我试图实现只搜索一个单词的一部分的结果(如果我没有弄错的话,根据Haystack文档称之为
autocomplete

示例:

搜索
“gol”

结果
“金鱼”

我试过什么?

按照中的要求,我在索引类中添加了以下行:

content_auto = indexes.EdgeNgramField(model_attr='content')
然后做了
python manage.py重建\u索引

但是,重建索引时产生了一个错误
haystack.exceptions.SearchFieldError:模型“”没有模型属性“content”。
其中
Reginald
是我索引表中的第一个条目,
Person
是我索引的模型

实际上,我的模型没有一个名为
content
的字段,但正如文档中所示,它不需要这样的字段


我正在使用
Whoosh 2.4.1
Django haystack 1.2.7
Django 1.4
,model\u attr用于引用现有的模型属性、可调用或关系:


所以我现在就是这样解决这个问题的

而不是:

content\u auto=index.EdgeNgramField(model\u attr='content')

使用:

content\u auto=index.EdgeNgramField(使用模板=True)

然后您可以为这些创建一个模板。例如,我在我的
目录
应用程序中有一个
项目索引
,我想在其中搜索
名称
描述
。因此,我在
templates/search/index/catalog/
中创建了一个名为
item\u content\u auto.txt的文件,其中包含以下内容:

{{ object.name }}
{{ object.description }}

这似乎是我所希望的。如果
'content'
起作用,则会有一点繁琐,但它应该足够了。

这里有一个更新的示例供参考(请参阅):


我知道这是一个老问题,但你有没有弄明白?没有。我在这个问题上工作的时间不长。是的,但你看:他们说你只需要使用“内容”,但这不起作用。他们一定已经更改了,但没有更新文档。
#search_indexes.py
class Book(indexes.SearchIndex, indexes.Indexable):
    text = indexes.EdgeNgramField(document=True, use_template=True)

    def get_model(self):
        return Book

#template
{{object.name}}

#query
SearchQuerySet().autocomplete(text=my_query)