Объедините или добавьте два набора запросов в Django

Чтобы добавить или объединить два набора запросов в Django, вы можете использовать следующие методы:

  1. Использование метода union(). Метод union()объединяет два набора запросов и возвращает новый набор запросов с уникальными результатами из обоих наборов запросов. Вот пример:
queryset1 = Model.objects.filter(condition1)
queryset2 = Model.objects.filter(condition2)
combined_queryset = queryset1.union(queryset2)
  1. Использование оператора |. Оператор |позволяет объединить два набора запросов и получить уникальные результаты. Вот пример:
queryset1 = Model.objects.filter(condition1)
queryset2 = Model.objects.filter(condition2)
combined_queryset = queryset1 | queryset2
  1. Использование функции chain(). Функцию chain()из модуля itertoolsможно использовать для объединения нескольких наборов запросов. Он возвращает итератор, который объединяет результаты нескольких наборов запросов. Вот пример:
from itertools import chain
queryset1 = Model.objects.filter(condition1)
queryset2 = Model.objects.filter(condition2)
combined_queryset = list(chain(queryset1, queryset2))
  1. Использование метода concat(). Если вы используете Django 3.2 или новее, вы можете использовать метод concat()для объединения наборов запросов. Этот метод объединяет результаты нескольких наборов запросов и возвращает новый набор запросов. Вот пример:
queryset1 = Model.objects.filter(condition1)
queryset2 = Model.objects.filter(condition2)
combined_queryset = queryset1.concat(queryset2)