query - orm django queries
Django: ¿el ORM es compatible con el operador "IN" de SQL? (3)
¿El Django ORM es compatible con el operador SQL IN
? Algo como:
SELECT *
FROM user
WHERE id IN (1, 5, 34, 567, 229)
¿Cómo uso el ORM de Django para hacer una consulta como esa?
Gracias.
in
User.objects.filter(id__in=[1, 5, 34, 567, 229])
print _.query
SELECT <fields> FROM "auth_user" WHERE "auth_user"."id" IN (1, 5, 34, 567, 229)
Además de eso, Django ORM también soporta Sub-Query:
Por ejemplo:
from django.db.models import Subquery
users = User.objects.all()
UserParent.objects.filter(user_id__in=Subquery(users.values(''id'')))
como Yuji indica arriba, <field_name> __in = [<list_of_values>] se traduce al siguiente SQL:
DONDE <field_name> IN (<list_of_values>)
Puede encontrar la referencia completa de los operadores WHERE de django SQL en la sección Búsqueda de campos del siguiente documento de API de Django.