mirror of
https://github.com/django/django.git
synced 2025-09-26 12:09:19 +00:00
Fixed #28553 -- Fixed annotation mismatch with QuerySet.values()/values_list() on compound queries.
Co-authored-by: Matthias Kestenholz <mk@feinheit.ch>
This commit is contained in:
parent
39d1e45227
commit
d6b6e5d0fd
4 changed files with 31 additions and 9 deletions
|
@ -246,7 +246,7 @@ class QuerySetSetOperationTests(TestCase):
|
|||
)
|
||||
.values_list("num", "count")
|
||||
)
|
||||
self.assertCountEqual(qs1.union(qs2), [(1, 0), (2, 1)])
|
||||
self.assertCountEqual(qs1.union(qs2), [(1, 0), (1, 2)])
|
||||
|
||||
def test_union_with_extra_and_values_list(self):
|
||||
qs1 = (
|
||||
|
@ -368,6 +368,20 @@ class QuerySetSetOperationTests(TestCase):
|
|||
[reserved_name.pk],
|
||||
)
|
||||
|
||||
def test_union_multiple_models_with_values_list_and_annotations(self):
|
||||
ReservedName.objects.create(name="rn1", order=10)
|
||||
Celebrity.objects.create(name="c1")
|
||||
qs1 = ReservedName.objects.annotate(row_type=Value("rn")).values_list(
|
||||
"name", "order", "row_type"
|
||||
)
|
||||
qs2 = Celebrity.objects.annotate(
|
||||
row_type=Value("cb"), order=Value(-10)
|
||||
).values_list("name", "order", "row_type")
|
||||
self.assertSequenceEqual(
|
||||
qs1.union(qs2).order_by("order"),
|
||||
[("c1", -10, "cb"), ("rn1", 10, "rn")],
|
||||
)
|
||||
|
||||
def test_union_in_subquery(self):
|
||||
ReservedName.objects.bulk_create(
|
||||
[
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue