首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Django Haystack在单个模型中进行搜索

问使用Django Haystack在单个模型中进行搜索
EN

Stack Overflow用户
提问于 2012-10-24 04:04:23
回答 1查看 2.5K关注 0票数 5

我在我的项目中使用haystack进行全站点搜索,在书籍、作者、事件和视频模型中进行搜索。

然后我有了主要的图书页面,我只想根据Books模型进行搜索。

我找到了这篇文章:How to return only indexed objects of a specific type in Haystack

然而,它似乎对我不起作用。我正在使用简单的后端进行本地测试,我知道这确实有一些问题,但我不确定这是否相关。

我的search_indexes.py文件如下所示:

代码语言:javascript
复制
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)

在我看来,如果传递了一个搜索查询,则只返回包含该查询的图书,否则显示所有图书:

代码语言:javascript
复制
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模型。

这部分似乎没有效果:

代码语言:javascript
复制
SearchQuerySet().models(Book)

有人能帮我找出我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-27 07:53:25

我想通了。我尝试使用简单搜索进行本地测试,因为我们还没有solr后端设置。

使用.models()函数对简单的后端不起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13038334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档