queryset query queries inner fields cual consultas avanzadas django django-queryset django-orm

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.

https://docs.djangoproject.com/en/1.9/ref/models/querysets/