Ich bin sicher, dass dies eine triviale Operation ist, aber ich kann nicht herausfinden, wie es gemacht wird.
Es muss etwas Klügeres geben:
ids = [1, 3, 6, 7, 9]
for id in ids:
MyModel.objects.filter(pk=id)
Ich möchte sie alle in einer Abfrage mit so etwas wie:
MyModel.objects.filter(pk=[1, 3, 6, 7, 9])
Wie kann ich eine Django-Abfrage mit einer Werteliste filtern?
python
django
django-queryset
Ajwood
quelle
quelle
Antworten:
Aus der Django-Dokumentation :
quelle
get()
, erhalten Sie natürlich einen ObjectDoesNotExist-Fehler.Wenn Sie eine Liste mit Elementen haben und die möglichen Werte aus der Liste überprüfen möchten, können Sie diese nicht verwenden
=
.Die SQL-Abfrage ist wie folgt,
SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
was nicht wahr ist. Sie müssen hierfür denin
Operator verwenden, damit Ihre AbfrageSELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
dem von Django__in
bereitgestellten Operator entspricht.quelle
Aus der Django-Dokumentation :
quelle