加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用Django Haystack在单个模型中搜索

发布时间:2020-12-20 13:30:48 所属栏目:Python 来源:网络整理
导读:我正在使用haystack对我的项目进行完整的站点搜索,该项目在书籍,作者,事件和视频模型中进行搜索. 然后我有主要的书页,我想只搜索书籍模型. 我发现这篇文章: How to return only indexed objects of a specific type in Haystack 但它似乎对我不起作用.我正
我正在使用haystack对我的项目进行完整的站点搜索,该项目在书籍,作者,事件和视频模型中进行搜索.

然后我有主要的书页,我想只搜索书籍模型.

我发现这篇文章:
How to return only indexed objects of a specific type in 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()函数不适用于简单的后端.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读