如何合并Django模型查询结果?

问题描述 投票:0回答:1

我必须修改旧版 Django Web 应用程序,其中有 2 个表使用相同的数据库结构存储相同的信息,唯一的区别是表的名称(以及相应的 Django 模型):

  • ProgramAAssignments
    program_a_assignments
    桌子
  • 模型
  • ProgramBAssignments
    program_b_assignments
    桌子
  • 模型

他们有 2 个不同的视图来查询这些模型,如下所示:

ProgramAAssignments.objects.all().order_by('-assignment_date')
ProgramBAssignments.objects.all().order_by('-assignment_date')

我决定保持数据库不变,只合并视图,但不知道如何合并这些查询。

python django-models
1个回答
0
投票

刚刚找到了 James W. 的 如何在 Django 视图中组合两个或更多查询集? 的文章,它完美地回答了我的问题(刚刚了解到“Django 模型查询”被称为

QuerySet
)。总结一下:

QuerySet
属于同一型号吗?

  1. YES:用于

    |
    联合运算符。

    model_combination = model_set1 | model_set2 | model_set3
    
    
  2. :使用

    union()

    model_combination = model_set1.union(model_set2, all=True)
    

我的

QuerySet
中的数据“形状”是相同的,但来自不同的模型,因此使用
union()
就像一个魅力。

© www.soinside.com 2019 - 2024. All rights reserved.