使用Django Haystack在单个模型中搜索
发布时间:2020-12-20 13:30:48 所属栏目:Python 来源:网络整理
导读:我正在使用haystack对我的项目进行完整的站点搜索,该项目在书籍,作者,事件和视频模型中进行搜索. 然后我有主要的书页,我想只搜索书籍模型. 我发现这篇文章: How to return only indexed objects of a specific type in Haystack 但它似乎对我不起作用.我正
我正在使用haystack对我的项目进行完整的站点搜索,该项目在书籍,作者,事件和视频模型中进行搜索.
然后我有主要的书页,我想只搜索书籍模型. 我发现这篇文章: 但它似乎对我不起作用.我正在使用简单的后端进行本地测试,我知道确实有一些问题,我不确定这是否相关. 我的search_indexes.py文件如下所示: class BookSearchIndex (SearchIndex): text = CharField(document=True,use_template=True) title_web = CharField(model_attr='title_web',boost=1.125) on_sale_date = CharField(model_attr='on_sale_date') def index_queryset(self): return Book.objects.active().filter(publish_level='published') site.register(Book,BookSearchIndex) 在我看来,如果传递了搜索查询,则仅返回包含该查询的书籍,否则显示所有书籍: search = self.request.GET.get('search',None) if search: clean_query = SearchQuerySet().query.clean(search) sqs = SearchQuerySet().models(Book).filter(content=clean_query).order_by('-on_sale_date') else: sqs = SearchQuerySet().models(Book).order_by('-on_sale_date) 搜索正确地根据搜索查询过滤项目,但它仍然返回所有模型.它并不仅限于Book模型. 看来这部分没有效果: SearchQuerySet().models(Book) 任何人都可以帮我弄清楚我做错了什么? 解决方法
我想到了.我试图在本地使用简单搜索进行测试,因为我们还没有设置solr后端.
使用.models()函数不适用于简单的后端. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |