python - tutorial - django windows
Filtro django con lista de valores. (3)
Estoy seguro de que esta es una operación trivial, pero no puedo entender cómo se hace ... ¿Cómo puedo crear una consulta django para una lista de valores?
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 a todos ellos en un show con algo como:
ids = [1, 3, 6, 7, 9]
MyModel.objects.filter( pk=ids )
Cuando tiene una lista de elementos y desea verificar los valores posibles de la lista, entonces no puede usar =
.
La consulta sql será como SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
que no es verdadera. Tienes que usar el operador para esto, así que la consulta será como SELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
para que Django proporcione el operador __in
.
De la documentación de Django :
Blog.objects.filter(pk__in=[1, 4, 7])
De la documentación de Django :
Blog.objects.in_bulk([1])
{1: <Blog: Beatles Blog>}
Blog.objects.in_bulk([1, 2])
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>}
Blog.objects.in_bulk([])
{}
Blog.objects.in_bulk()
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>, 3: <Blog: Django Weblog>}
Blog.objects.in_bulk([''beatles_blog''], field_name=''slug'')
{''beatles_blog'': <Blog: Beatles Blog>}