Opened 7 years ago
Last modified 7 years ago
#28781 closed Bug
Order of queryset.union() with queryset.values() is incorrect — at Version 1
Reported by: | Amir Aziiev | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 1.11 |
Severity: | Normal | Keywords: | union, values |
Cc: | Mariusz Felisiak | Triage Stage: | Accepted |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
For example:
from django.db import models class MyModel(models.Model): col1 = models.CharField(max_length=11) col2 = models.CharField(max_length=22) col3 = models.CharField(max_length=33) qs = MyModel.objects.union(MyModel.objects.all(), all=True).values('col2', 'col3', 'col1', 'id').order_by('col1') print(qs.query) # Expected SQL """ (SELECT "mymodel"."id", "mymodel"."col1", "mymodel"."col2", "mymodel"."col3" FROM "mymodel") UNION ALL (SELECT"mymodel"." id", "mymodel"."col1", "mymodel"."col2", "mymodel"."col3" FROM "mymodel") ORDER BY (3); ------------^ """ # Must be SQL """ (SELECT "mymodel"."id", "mymodel"."col1", "mymodel"."col2", "mymodel"."col3" FROM "mymodel") UNION ALL (SELECT"mymodel"." id", "mymodel"."col1", "mymodel"."col2", "mymodel"."col3" FROM "mymodel") ORDER BY (2); ------------^
Note:
See TracTickets
for help on using tickets.