Q эквивалентно OR
на языке SQL.Если вы хотите найти значение пересечения request__in=rq
и area__in=rq
, вам следует использовать обычный механизм фильтрации, который эквивалентен предложению AND
.
rq = ['a', 'b', 'c', 'd', 'e'...]
transact = Transact.objects.filter(request__in=rq,area__in=rq)
РЕДАКТИРОВАТЬ: Вместоиспользуя Q (потому что это не решение для того, что вы спрашиваете), вы можете использовать этот подход:
rq = ['a', 'b', 'c', 'd', 'e'...]
result = Transact.objects.filter(request__iregex=r'(' + '|'.join(rq) + ')', area__iregex=r'(' + '|'.join(rq) + ')')