Как я могу найти объединение двух наборов запросов Django? - программирование
Подтвердить что ты не робот

Как я могу найти объединение двух наборов запросов Django?

У меня есть модель Django с двумя настраиваемыми методами. Каждый возвращает другое подмножество объектов моделей, основанное на другом свойстве объекта.

Есть ли способ получить набор запросов или просто список объектов, то есть объединение запросов, возвращаемых каждым методом менеджера?

4b9b3361

Ответ 1

Это работает и выглядит немного чище:

records = query1 | query2

Если вы не хотите дублировать, вам нужно добавить .distinct():

records = (query1 | query2).distinct()

Ответ 2

Начиная с версия 1.11, django querysets имеют встроенный объединенный метод.

q = q1.union(q2) #q will contain all unique records of q1 + q2
q = q1.union(q2, all=True) #q will contain all records of q1 + q2 including duplicates
q = q1.union(q2,q3) # more than 2 queryset union

Подробнее см. мой сообщение в блоге.