Jestem pewien, że jest to trywialna operacja, ale nie mogę zrozumieć, jak to się robi.
Musi być coś mądrzejszego niż to:
ids = [1, 3, 6, 7, 9]
for id in ids:
MyModel.objects.filter(pk=id)
Chcę uzyskać je wszystkie w jednym zapytaniu za pomocą czegoś takiego:
MyModel.objects.filter(pk=[1, 3, 6, 7, 9])
Jak mogę odfiltrować zapytanie Django z listą wartości?
python
django
django-queryset
ajwood
źródło
źródło
Odpowiedzi:
Z dokumentacji Django :
źródło
get()
, otrzymasz oczywiście błąd ObjectDoesNotExist.Gdy masz listę elementów i chcesz sprawdzić możliwe wartości z listy, nie możesz jej użyć
=
.Zapytanie sql będzie takie,
SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
które nie jest prawdą. W tym celu należy użyćin
operatora, aby zapytanie było podobneSELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
do tego__in
operatora Django .źródło
Z dokumentacji Django :
źródło