Comment puis-je filtrer un Django d'une requête avec une liste de valeurs?
Je suis sûr que c'est une opération triviale, mais je ne peux pas comprendre comment c'est fait.
Il faut que ce soit quelque chose de plus intelligent que cela:
ids = [1, 3, 6, 7, 9]
for id in ids:
MyModel.objects.filter(pk=id)
Je suis à la recherche pour obtenir tous dans une seule requête avec quelque chose comme:
MyModel.objects.filter(pk=[1, 3, 6, 7, 9])
Comment puis-je filtrer un Django d'une requête avec une liste de valeurs?
Vous devez vous connecter pour publier un commentaire.
De la Documentation de Django:
get()
, vous obtiendrez un ObjectDoesNotExist erreur de parcours.Lorsque vous avez la liste des éléments et que vous voulez vérifier les valeurs possibles de la liste, alors vous ne pouvez pas utiliser
=
.La requête sql sera comme
SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
qui n'est pas vrai. Vous devez utiliserin
opérateur si vous interrogez sera commeSELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
pour que Django fournir__in
opérateur.De la Documentation de Django: