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

如何在DJANGO中合并多个查询集

发布时间:2020-12-20 11:35:31 所属栏目:Python 来源:网络整理
导读:参见英文答案 How to combine 2 or more querysets in a Django view?????????????????????????????????????10个 我必须在下面的单个列表中合并查询集: result_list_1 = Col.objects.defer("tags").filter(producer__username__icontains=crit) result_list
参见英文答案 > How to combine 2 or more querysets in a Django view?????????????????????????????????????10个
我必须在下面的单个列表中合并查询集:

result_list_1 = Col.objects.defer("tags").filter(producer__username__icontains=crit) 
result_list_2 = Col.objects.defer("tags").filter(name__icontains=crit)
result_list_3 = Col.objects.defer("tags").filter(description__icontains=crit)
result_list_4 = Col.objects.filter(tags__name__icontains=crit)
...

每个result_list都包含项目,这些项目具有唯一的数字ID,可用于确保没有重复项.

我不能用|同时查询DB或Q对象.

如何将结果集合并到一个列表中?

解决方法

如何对itertools.chain稍作修改,以确保您不会遭遇欺骗:

def unique_chain(*iterables):
    known_ids = set()
    for it in iterables:
        for element in it:
            if element.id not in known_ids:
                known_ids.add(element.id)
                yield element

有了它,您可以创建组合列表:

combined_list = list(unique_chain(result_list_1,result_list_2,... ))

(编辑:李大同)

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

    推荐文章
      热点阅读