Estoy seguro de que esta es una operación trivial, pero no puedo entender cómo se hace.
Tiene que haber algo más inteligente que esto:
ids = [1, 3, 6, 7, 9]
for id in ids:
MyModel.objects.filter(pk=id)
Estoy buscando obtenerlos todos en una consulta con algo como:
MyModel.objects.filter(pk=[1, 3, 6, 7, 9])
¿Cómo puedo filtrar una consulta de Django con una lista de valores?
python
django
django-queryset
ajwood
fuente
fuente
Respuestas:
De la documentación de Django :
fuente
get()
, obtendrá un error ObjectDoesNotExist, por supuesto.Cuando tiene una lista de elementos y desea verificar los posibles valores de la lista, no puede usarlos
=
.La consulta sql será como lo
SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
que no es cierto. Tiene que usar elin
operador para esto, por lo que su consulta será comoSELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
para ese__in
operador de Django .fuente
De la documentación de Django :
fuente