Как сделать фильтр queryset с двумя списками?
Я очень новичок в django,
У меня есть два списка, и я хочу отфильтровать значения из таблицы. Я использовал этот запрос, но он дает мне объединение двух списков, т.е. OR. Я хочу что-то с AND, т.е. фильтровать значения таким образом retail_item_list = [100,120] и city_id_list = [1,2] вывод должен быть на основе этих комбинаций (100,1) (120,2)
val = list(KVIItem.objects.filter(Q(retail_item_id__in=retail_item_list, cms_city_id__in=city_id_list)).values("retail_item_id","cms_city_id","active","id").order_by('-id'))
Вы можете построить объект Q, который будет поэлементно требовать, чтобы если retail_item является 100, то city_id должен быть 1; или если retail_item является 120 и city_id является 2.
Мы можем сделать это с помощью:
from django.db.models import Q
qfilter = Q(
*[
Q(retail_item_id=retail, cms_city_id=city)
for retail, city in zip(retail_item_list, city_id_list)
],
_connector=Q.OR
)
KVIItem.objects.filter(qfilter)