你如何在 Django 中将两个查询集组合成一个查询集(不是列表)?

How do you combine two querysets into one queryset(not a list) in django?

我想简单地将来自不同模型的两个查询集组合成一个查询集(而不是其他 Whosebug 问题中显示的列表!)。例如,这里有两个查询集:

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

然后,我想要一个结合了 ab 的查询集 c。谢谢,有什么问题请给我留言。

你不能那样做。想象一下:

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

(source)

如果您的两个模型相似且字段重叠,您可以使用类似django-polymorphic

的东西