如何找到两个Django查询集的并集?
我有一个Django模型,它里面有两个自定义的管理方法。每个方法根据对象的不同属性,返回模型对象的不同子集。
有没有办法得到一个查询集,或者说只是一个对象的列表,这个列表是每个管理方法返回的查询集的并集呢?
3 个回答
11
我建议使用 'query1.union(query2)' 而不是 'query1 | query2';因为我发现这两种方法得到的结果不一样,而前者是我预期的结果。
以下是我遇到的情况:
print "union result:"
for element in query_set1.union(query_set2):
print element
print "| result:"
for element in (query_set1 | query_set2):
print element
结果:
union result:
KafkaTopic object
KafkaTopic object
KafkaTopic object
KafkaTopic object
KafkaTopic object
| result:
KafkaTopic object
KafkaTopic object
223
这个方法有效,而且看起来更简洁一些:
records = query1 | query2
如果你不想要重复的内容,那你需要加上 .distinct()
:
records = (query1 | query2).distinct()