Django:Queryset.union()和OR运算符有什么区别?
组合 QuerySets 时,QuerySet.union()方法和在 QuerySets 之间使用 OR 运算符有什么区别|?
考虑以下 2 个查询集:
qs1 = Candidate.objects.filter(id=1)
qs2 = Candidate.objects.filter(id=2)
如何qs1 | qs2不同qs1.union(qs2)?我错过了引擎盖下的一些微妙之处吗?
回答
来自QuerySet API 参考
union()、intersection() 和 difference() 返回第一个 QuerySet 类型的模型实例,即使参数是其他模型的 QuerySet。
该.union()方法返回查询集仅在第一个查询集参数的模式/列名通过。因为 OR(|) 运算符不是这种情况。