如何将多个查询集合并/合并到单个queryset django中

时间:2013-09-03 09:59:25

标签: python django merge django-queryset

我有一个queryset,如下所示

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

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

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三个查询集添加到上面的一个?

1 个答案:

答案 0 :(得分:2)

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

你想要做的基本上是

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