我必须修改旧版 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')
我决定保持数据库不变,只合并视图,但不知道如何合并这些查询。
刚刚找到了 James W. 的 如何在 Django 视图中组合两个或更多查询集? 的文章,它完美地回答了我的问题(刚刚了解到“Django 模型查询”被称为
QuerySet
)。总结一下:
QuerySet
属于同一型号吗?YES:用于
|
联合运算符。
model_combination = model_set1 | model_set2 | model_set3
否:使用
union()
。
model_combination = model_set1.union(model_set2, all=True)
我的
QuerySet
中的数据“形状”是相同的,但来自不同的模型,因此使用union()
就像一个魅力。