我怎样才能find两个Django查询集的联合?

我有两个自定义pipe理器方法的Django模型。 每个都根据对象的不同属性返回模型对象的不同子集。

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

这工作,看起来有点干净:

records = query1 | query2 

如果你不想重复,那么你需要追加.distinct()

 records = (query1 | query2).distinct() 

从版本1.11开始,django querysets有一个内置的联合方法。

 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 

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