Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
How to merge Django model query results?
I have to modify a legacy Django web application where there are 2 tables to store the same information using the same database structure, and the only difference is the names of the tables (and the corresponding Django models):
-
ProgramAAssignments
model forprogram_a_assignments
table -
ProgramBAssignments
model forprogram_b_assignments
table
They have 2 distinct views that query these models like so:
ProgramAAssignments.objects.all().order_by('-assignment_date')
ProgramBAssignments.objects.all().order_by('-assignment_date')
I decided to leave the database untouched and just combine the views, but don't know how to merge these queries.
1 answer
Just found the How Can I Combine Two or More QuerySets in a Django View? article by James W. that perfectly answers my question (and just learned that a "Django model query" is called a QuerySet
). To sum up:
Do the QuerySet
s belong to the same model?
-
YES: use to
|
union operator.model_combination = model_set1 | model_set2 | model_set3
-
NO: use
union()
.model_combination = model_set1.union(model_set2, all=True)
The "shape" of the data in my QuerySet
s were the same, but coming from different models, so using union()
worked like a charm.
0 comment threads