Я уверен, что это тривиальная операция, но я не могу понять, как это делается.
Должно быть что-то умнее, чем это:
ids = [1, 3, 6, 7, 9]
for id in ids:
MyModel.objects.filter(pk=id)
Я хочу получить их все в одном запросе с чем-то вроде:
MyModel.objects.filter(pk=[1, 3, 6, 7, 9])
Как я могу отфильтровать запрос Django со списком значений?
python
django
django-queryset
ajwood
источник
источник
Ответы:
Из документации Django :
источник
get()
, вы получите ошибку ObjectDoesNotExist, конечно.Когда у вас есть список элементов, и вы хотите проверить возможные значения из списка, вы не можете использовать
=
.SQL-запрос будет похож на
SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
что не соответствует действительности. Вы должны использоватьin
оператор для этого, поэтому ваш запрос будет таким же, какSELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
для этого__in
оператора Django .источник
Из документации Django :
источник