python - relaciones - ¿Cómo puedo encontrar la unión de dos conjuntos de consulta de Django?
subconjunto python (2)
Tengo un modelo de Django con dos métodos de administrador personalizados. Cada uno devuelve un subconjunto diferente de los objetos del modelo, en función de una propiedad diferente del objeto.
¿Hay alguna manera de obtener un conjunto de consulta, o simplemente una lista de objetos, esa es la unión de los conjuntos de consulta devueltos por cada método de administrador?
A partir de la versión 1.11 , los conjuntos de consultas django tienen un método de unión integrado.
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
Ver mi blog en esto para más ejemplos.
Esto funciona y se ve un poco más limpio:
records = query1 | query2
Si no quiere duplicados, necesitará agregar .distinct()
:
records = (query1 | query2).distinct()