【问题标题】:How do you combine two querysets into one queryset(not a list) in django?如何在 django 中将两个查询集组合成一个查询集(不是列表)?
【发布时间】:2022-01-12 12:07:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: django django-models django-views django-forms django-templates


    【解决方案1】:

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

    class Modelone(models.model):
     number = models.IntegerField()
    
    class Modeltwo(models.model):
     text = models.TextField()
    

    想象一下,您将针对连接的查询集进行过滤,如果行(或实例)没有相同的字段,这将如何工作?

    如果你想加入 same 模型的两个查询集,你可以这样做:

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

    (source)

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

    【讨论】:

    • 你能告诉我当有重叠的字段时我该怎么做(比如a和b都是number)?我不太明白你发给我的链接。此外,“重叠字段”是否可能是日期时间或日期字段,但模型中只是具有不同的字段标签?
    • 也许,更新您的问题以包括您的两个模型。否则很难说你想达到什么目标。
    猜你喜欢
    • 2020-12-24
    • 1970-01-01
    • 2016-05-09
    • 2019-02-11
    • 2018-06-27
    • 2016-10-30
    • 2013-09-06
    • 2011-02-24
    • 1970-01-01
    相关资源
    最近更新 更多