Django-haystack:在添加自动完成所需的`content_auto`行后,rebuild_index失败(haystack.exceptions.SearchFieldError)

Ben*_*ey4 6 python autocomplete whoosh django-haystack

我正在尝试实现屈服结果,只搜索一个单词的一部分(autocomplete根据Haystack文档调用,如果我没有记错的话).

例:

搜索 "gol"

结果 "goldfish"

我试过了什么?

我按照文档的第1步中的要求做,我在Index类中添加了以下行:

content_auto = indexes.EdgeNgramField(model_attr='content')
Run Code Online (Sandbox Code Playgroud)

然后呢python manage.py rebuild_index.

然而,重建索引产生了一个错误, haystack.exceptions.SearchFieldError: The model '<Person: Reginald>' does not have a model_attr 'content'.Reginald是我的索引表中的第一个条目,并且Person是我索引的模型.

现在我的模型确实没有调用的字段,content但是在文档中显示它不需要有这样的字段.

我正在使用Whoosh 2.4.1,Django-haystack 1.2.7Django 1.4.

Mik*_*ini 3

这就是我现在解决这个问题的方法。

代替:

content_auto = indexes.EdgeNgramField(model_attr='content')

使用:

content_auto = indexes.EdgeNgramField(use_template=True)

然后您可以为这些创建一个模板。例如,ItemIndex我的应用程序中有一个catalog,我想在其中搜索namedescription。因此,我在templates/search/indexes/catalog/名为 的文件中创建了一个文件item_content_auto.txt,其中包含以下内容:

{{ object.name }}
{{ object.description }}
Run Code Online (Sandbox Code Playgroud)

这似乎正在按照我想要的方式运行。比工作时要乏味一点'content',但应该足够了。