У меня есть модель Django с двумя пользовательскими методами менеджера.Каждый возвращает различное подмножество объектов модели, основанное на различном свойстве объекта.
Есть ли способ получить набор запросов или просто список объектов, это объединение наборов запросов, возвращаемых каждымметод менеджера?
Это работает и выглядит немного чище:
records = query1 | query2
Если вам не нужны дубликаты, вам нужно добавить .distinct():
.distinct()
records = (query1 | query2).distinct()
Начиная с версии 1.11 , наборы запросов django имеют встроенный метод объединения.
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
См. Мой пост в блоге об этом для получения дополнительных примеров.