Je suis sûr que c'est une opération triviale, mais je ne peux pas comprendre comment ça se passe.
Il doit y avoir quelque chose de plus intelligent que cela:
ids = [1, 3, 6, 7, 9]
for id in ids:
MyModel.objects.filter(pk=id)
Je cherche à obtenir tous dans une requête avec quelque chose comme:
MyModel.objects.filter(pk=[1, 3, 6, 7, 9])
Comment filtrer une requête Django avec une liste de valeurs?
Depuis le documentation Django :
Blog.objects.filter(pk__in=[1, 4, 7])
Lorsque vous avez une liste d'éléments et que vous souhaitez vérifier les valeurs possibles de la liste, vous ne pouvez pas utiliser =
.
La requête SQL ressemblera à SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
, ce qui n’est pas vrai. Vous devez utiliser l'opérateur in
pour cela. Votre requête sera donc comme SELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
pour ce Django fournir __in
opérateur.
Depuis le documentation 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>}