Pau*_*ite 75 python django django-models
我有一个带有两个自定义管理器方法的Django模型.每个都根据对象的不同属性返回模型对象的不同子集.
有没有办法获取查询集,或只是一个对象列表,这是每个管理器方法返回的查询集的并集?
Jor*_*ter 162
这工作,看起来更清洁:
records = query1 | query2
Run Code Online (Sandbox Code Playgroud)
如果你不想要重复,那么你需要追加.distinct()
:
records = (query1 | query2).distinct()
Run Code Online (Sandbox Code Playgroud)
Jos*_*ian 41
从版本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
Run Code Online (Sandbox Code Playgroud)
有关更多示例,请参阅我的博客文章.
我建议使用 'query1.union(query2)' 而不是 'query1 | 查询2'; 我从上面两种方法得到了不同的结果,前一种是我所期望的。以下是我遇到的:
print "union result:"
for element in query_set1.union(query_set2):
print element
print "| result:"
for element in (query_set1 | query_set2):
print element
Run Code Online (Sandbox Code Playgroud)
结果:
union result:
KafkaTopic object
KafkaTopic object
KafkaTopic object
KafkaTopic object
KafkaTopic object
| result:
KafkaTopic object
KafkaTopic object
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
42269 次 |
最近记录: |