django中使用haystack配置多个模型如何过滤

最近在项目中遇到一个问题,项目中很多处需要使用到搜索功能,而且每个地方搜索的模型类又不一样,那么就会出现很多问题,如果两个不同的搜索模型类里面都有相同的字段值,就会搜索到两个模型类的对象,这显然不是我们所需要的,只需要其中一个模型类的搜索结果才对,查看很多资料都没有找到比较好的解决办法,我想要的是能在SearchView中能指定搜索需要使用到的模型类,但是没有找到,那只有从SearchView这里下手,通过查看源码我发现SearchView类中get__results方法返回的查询结果是一个可迭代对象django中使用haystack配置多个模型如何过滤_第1张图片

那么我们就可以从这里入手去过滤所需要的模型

    template = 'search/pricing_search.html'

    def get_results(self):
        res_list = []
        for search_obj in self.form.search():
            if search_obj.model_name == 'product':
                res_list.append(search_obj)
        return res_list

大概就是这个样子,从这里过滤不会影响到分页的数据,如果有更好的办法能过滤搜索模型类的欢迎留言告诉我

你可能感兴趣的:(django)