关于python:如何找到两个Django查询集的并集?

How can I find the union of two Django querysets?

我有一个带有两个自定义管理器方法的django模型。每个返回模型对象的不同子集,基于对象的不同属性。

有没有办法得到一个查询集,或者只是一个对象列表,这是每个管理器方法返回的查询集的联合?


这很有效,看起来更干净:

1
records = query1 | query2

如果不需要重复,则需要追加.distinct()

1
records = (query1 | query2).distinct()


从1.11版开始,Django查询集有一个内置的联合方法。

1
2
3
q = q1.union(q2) #q will contain all unique records of q1 + q2
q = q1.union(q2, all=True) #q will contain all records of q1 + q2 including duplicates
q = q1.union(q2,q3) # more than 2 queryset union

有关更多示例,请参阅我的博客文章。