我在我的项目中使用haystack进行全站点搜索,在书籍、作者、事件和视频模型中进行搜索。
然后我有了主要的图书页面,我只想根据Books模型进行搜索。
我找到了这篇文章: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)有人能帮我找出我做错了什么吗?
发布于 2012-11-27 07:53:25
我想通了。我尝试使用简单搜索进行本地测试,因为我们还没有solr后端设置。
使用.models()函数对简单的后端不起作用。
https://stackoverflow.com/questions/13038334
复制相似问题