Как объединить два кверисета в один кверисет (не список) в 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