【问题标题】:How to combine/merge more than one queryset in to single queryset django如何将多个查询集组合/合并到单个查询集 django
【发布时间】:2013-09-06 12:22:24
【问题描述】:

我有一个queryset,如下所示

entries = [<Entry: Entry got issues>, <Entry: Entry Latest entry>, <Entry: Entry now tested>]

上述查询集entries 中的每个object 都会有一个如下查询集

for entry in entries:
    print entry.tags.all()

结果

[<Tag: published>, <Tag: tags>, <Tag: needs>, <Tag: be>, <Tag: issues>, <Tag: to>]
[<Tag: abcd>]
[<Tag: abcd>, <Tag: nothing>]

所以我想将结果中的上述三个查询集合并到一个查询集,如下所示

[<Tag: published>, <Tag: tags>, <Tag: needs>, <Tag: be>, <Tag: issues>, <Tag: to>]
 <Tag: abcd>, <Tag: abcd>, <Tag: nothing> ]

那么如何在 django 中将merge/combine 三个查询集合二为一呢?

【问题讨论】:

    标签: python django merge django-queryset


    【解决方案1】:

    使用| 运算符。即queryset = queryset1 | queryset2 | queryset3 但您也可以使用&amp; 运算符来查找交集。您必须确保所有返回的查询集都是相同的对象,即标记。

    你想做的基本上是

    queryset = entries[0].tags.all()
    for entry in entries[1:]:
        queryset = queryset | entry.tags.all()
    

    【讨论】:

    • K 但我从上面的 for 循环中获取查询集,那么如何使用 for 循环中的 |&amp; 合并它们?
    猜你喜欢
    • 2017-10-09
    • 2016-05-09
    • 2017-03-09
    • 2019-08-11
    • 2020-12-24
    • 2017-12-04
    • 2018-08-02
    • 1970-01-01
    • 2022-11-08
    相关资源
    最近更新 更多