Вы можете использовать __in
lookup [Django -doc] :
image_list = Image.objects.filter(<b>item__in=item_list</b>)
для некоторых баз данных, например MySQL которые иногда не подходят для оптимизации подзапросов, которые не являются динамическими c, может быть лучше сначала материализовать список Item
с, а затем передать список идентификаторов в Django :
image_list = Image.objects.filter(item__in=<b>list(</b>item_list<b>)</b>)
Это указано в документации как:
Будьте осторожны при использовании вложенных запросов и понимайте характеристики производительности сервера базы данных (если сомневаетесь, тесты производительности!). Некоторые бэкэнды базы данных, особенно MySQL, не очень хорошо оптимизируют вложенные запросы. В этих случаях эффективнее извлечь список значений и затем передать его во второй запрос.