Django ORM фильтр с двумя __in

У меня есть модель с двумя полями. product_ids_list = [1,2,3,4] selling_prices_list = [65, 89, 93]. Длина списков product_ids_list и selling_prices_list одинакова.

Я хочу выполнить нижеприведенный ORM фильтр для одного product_id и соответствующей ему цены продажи следующим образом.

product_instances = Product.objects.filter(product_id=product_ids_list[0], selling_price=selling_prices_list[0]).first()

Но как выполнить ORM фильтр с помощью одного обращения к БД со списком product_ids_list и соответствующим ему списком sell_prices_list.

product_instances = Product.objects.filter(product_id__in=product_ids_list, selling_price__in=selling_prices_list).first() (This isn't working in the expected way)

Если product_id является ForeignKey и selling_price является IntegerField, то код фильтра будет следующим:

product_instances = Product.objects.filter(product_id__id__in=product_ids_list, selling_price__in=selling_prices_list).first()

Поскольку вы предоставляете список идентификаторов, мы должны сравнить идентификаторы продуктов. Если мы фильтруем с помощью product_id__in, он сравнивает объект Product с ID в списке.

Предложение: Лучше было бы иметь имя поля ForeignKey как product вместо product_id, чтобы избежать путаницы, как в приведенном выше фильтре ORM.

Вернуться на верх