Как сделать фильтр 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)
Вернуться на верх