Tenho certeza de que essa é uma operação trivial, mas não consigo descobrir como isso é feito.
Tem que haver algo mais inteligente do que isso:
ids = [1, 3, 6, 7, 9]
for id in ids:
MyModel.objects.filter(pk=id)
Eu estou olhando para obtê-los todos em uma consulta com algo como:
MyModel.objects.filter(pk=[1, 3, 6, 7, 9])
Como posso filtrar uma consulta Django com uma lista de valores?
python
django
django-queryset
ajwood
fonte
fonte
Respostas:
Na documentação do Django :
fonte
get()
, você obterá um erro ObjectDoesNotExist, é claro.Quando você tem uma lista de itens e deseja verificar os possíveis valores da lista, não pode usá-lo
=
.A consulta sql será semelhante à
SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
que não é verdadeira. Você precisa usar oin
operador para isso, para que a consulta seja semelhanteSELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
ao__in
operador de fornecimento do Django .fonte
Na documentação do Django :
fonte