Как объединить два кверисета в один кверисет (не список) в django?

Я хочу просто объединить два набора запросов из разных моделей в один набор запросов (а не в список, как показано в других вопросах на stackoverflow!). Например, вот два кверисета:

a = Modelone.objects.all()
b = Modeltwo.objects.filter(number__gte=4)

Тогда, я хочу получить кверисет c, который объединяет и a, и b. Спасибо, и, пожалуйста, оставьте мне любые вопросы, которые у вас есть.

Вы не можете этого сделать. Представьте себе следующее:

class Modelone(models.model):
 number = models.IntegerField()

class Modeltwo(models.model):
 text = models.TextField()

Представьте, что вы будете фильтровать по объединенному набору запросов, как это может работать, если строки (или экземпляры) не имеют одинаковых полей?

Если вы хотите объединить два кверисета одинаковой модели, вы можете сделать следующее:

qs1 = modelone.objects.filter(nummber=10)
qs2 = modelone.objects.filter(nummber=20)
joined = qs1 | qs2

(источник)

Если ваши две модели похожи и имеют перекрывающиеся поля, вы могли бы использовать что-то вроде django-polymorphic

Вернуться на верх