Saya yakin ini adalah operasi sepele, tetapi saya tidak tahu bagaimana melakukannya.
Pasti ada sesuatu yang lebih pintar dari ini:
ids = [1, 3, 6, 7, 9]
for id in ids:
MyModel.objects.filter(pk=id)
Saya ingin mendapatkan semuanya dalam satu permintaan dengan sesuatu seperti:
MyModel.objects.filter(pk=[1, 3, 6, 7, 9])
Bagaimana saya bisa memfilter permintaan Django dengan daftar nilai?
python
django
django-queryset
ajwood
sumber
sumber
Jawaban:
Dari dokumentasi Django :
sumber
get()
, Anda tentu saja akan mendapatkan kesalahan ObjectDoesNotExist.Ketika Anda memiliki daftar item dan Anda ingin memeriksa nilai yang mungkin dari daftar maka Anda tidak dapat menggunakannya
=
.Kueri sql akan seperti
SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
yang tidak benar. Anda harus menggunakanin
operator untuk ini sehingga permintaan Anda akan sepertiSELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
untuk yang disediakan__in
operator Django .sumber
Dari dokumentasi Django :
sumber