Как передать список Q для фильтрации по ИЛИ? Что-то вроде:
q_list = [Q(xyz__isnull=True), Q(x__startswith='x')]?
Без списка я бы сделал:
Model.objects.filter(Q(xyz__isnull=True) | Q(x__startswith='x'))
Используйте функцию Python Reduce ():
import operator reduced_q = reduce(operator.or_, q_list) Model.objects.filter(reduced_q)
Объекты Q также имеют метод add, который принимает другой объект Q и соединитель Q (И или ИЛИ).
add
q_object = Q(xyz__isnull=True) q_object.add(Q(x__startswith='x'), Q.OR)
Я считаю, что это полезно при создании фильтров OR, и я написал более длинный пример в своем блоге: «Добавление» объектов Q в Django