diff options
| author | Simon Charette <charette.s@gmail.com> | 2022-11-15 00:20:29 -0500 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-11-15 10:48:19 +0100 |
| commit | 70499b25c708557fb9ee2264686cd172f4b2354e (patch) | |
| tree | 6a61f98f0904b47be12c998e8741ae60f5986aa7 /tests | |
| parent | 7adb0c8b6008c30cd1d47ba076da4bdbdb4595fe (diff) | |
Fixed #34123 -- Fixed combinator order by alias when using select_related().
Regression in c58a8acd413ccc992dd30afd98ed900897e1f719.
Thanks to Shai Berger for the report and tests.
Co-Authored-By: David Sanders <shang.xiao.sanders@gmail.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/queries/test_qs_combinators.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/queries/test_qs_combinators.py b/tests/queries/test_qs_combinators.py index 865e172816..9d4988d6eb 100644 --- a/tests/queries/test_qs_combinators.py +++ b/tests/queries/test_qs_combinators.py @@ -304,6 +304,34 @@ class QuerySetSetOperationTests(TestCase): operator.itemgetter("num"), ) + def test_union_with_select_related_and_order(self): + e1 = ExtraInfo.objects.create(value=7, info="e1") + a1 = Author.objects.create(name="a1", num=1, extra=e1) + a2 = Author.objects.create(name="a2", num=3, extra=e1) + Author.objects.create(name="a3", num=2, extra=e1) + base_qs = Author.objects.select_related("extra").order_by() + qs1 = base_qs.filter(name="a1") + qs2 = base_qs.filter(name="a2") + self.assertSequenceEqual(qs1.union(qs2).order_by("pk"), [a1, a2]) + + @skipUnlessDBFeature("supports_slicing_ordering_in_compound") + def test_union_with_select_related_and_first(self): + e1 = ExtraInfo.objects.create(value=7, info="e1") + a1 = Author.objects.create(name="a1", num=1, extra=e1) + Author.objects.create(name="a2", num=3, extra=e1) + base_qs = Author.objects.select_related("extra") + qs1 = base_qs.filter(name="a1") + qs2 = base_qs.filter(name="a2") + self.assertEqual(qs1.union(qs2).first(), a1) + + def test_union_with_first(self): + e1 = ExtraInfo.objects.create(value=7, info="e1") + a1 = Author.objects.create(name="a1", num=1, extra=e1) + base_qs = Author.objects.order_by() + qs1 = base_qs.filter(name="a1") + qs2 = base_qs.filter(name="a2") + self.assertEqual(qs1.union(qs2).first(), a1) + def test_union_multiple_models_with_values_list_and_order(self): reserved_name = ReservedName.objects.create(name="rn1", order=0) qs1 = Celebrity.objects.all() |
