Saltar al contenido

¿Cómo subconsultar en queryset en django?

Hacemos una verificación profunda cada tutoriales en nuestra página web con la meta de mostrarte siempre la información más veraz y certera.

Solución:

como lo menciona ypercube, su caso de uso no requiere una subconsulta.

pero de todos modos, dado que muchas personas ingresan a esta página para aprender cómo hacer una subconsulta, así es como se hace.

employee_query = Employee.objects.filter(company='Private').only('id').all()
Person.objects.value('name', 'age').filter(id__in=employee_query)

Fuente: http://mattrobenolt.com/the-django-orm-and-subqueries/

ids = Employee.objects.filter(company='Private').values_list('id', flat=True)
Person.objects.filter(id__in=ids).values('name', 'age')

Puede crear subconsultas en Django utilizando un conjunto de consultas no evaluado para filtrar su conjunto de consultas principal. En tu caso, sería algo como esto:

employee_query = Employee.objects.filter(company='Private')
people = Person.objects.filter(employee__in=employee_query)

Supongo que tienes una relación inversa de Person a Employee nombrada employee. Me resultó útil mirar la consulta SQL generada por un conjunto de consultas cuando intentaba entender cómo funcionan los filtros.

print people.query

Como han dicho otros, realmente no necesita una subconsulta para su ejemplo. Podría unirse a la tabla de empleados:

people2 = Person.objects.filter(employee__company='Private')

Acuérdate de que tienes la capacidad de esclarecer tu experiencia si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *