首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并多个SearchQuerySet

合并多个SearchQuerySet
EN

Stack Overflow用户
提问于 2015-12-14 02:19:05
回答 1查看 214关注 0票数 3

我使用Haystack和solr对多个模型进行全局搜索,我尝试对模型使用不同的过滤器,但最后我必须返回1个查询集,我不知道如何合并。

代码语言:javascript
复制
#views
from haystack.generic_views import SearchView

class search(SearchView):

    def get_queryset(self):
        queryset = super(search, self).get_queryset()
        q1 = queryset.models(Event).filter(...)
        q2 = queryset.models(News).filter(...)
        queryset = q1 | q2 #don't work
        queryset = list(chain(q1, q2)) #don't work
        return queryset.order_by('-pub_date','cname')

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-02-12 01:12:48

我已经找到了一种修改上下文的方法,但我不确定这是最好的…

代码语言:javascript
复制
def excludeResults(results):
    for i in results:
        if i.model == Event and i.date < datetime.now():    
        results.remove(i)

    return results

class search(SearchView):
    def get_queryset(self):
        queryset = super(search, self).get_queryset()
        return queryset.filter(visible = True).order_by('cname','-pub_date')

    def get_context_data(self, *args, **kwargs):
        context = super(search, self).get_context_data(*args, **kwargs)
        context['page_obj'].object_list = excludeResults(context['page_obj'].object_list)


        return context

也许是最好的解决方案?

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

https://stackoverflow.com/questions/34254602

复制
相关文章

相似问题

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