summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2019-12-23 12:17:56 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-12-23 12:18:52 +0100
commit1e45b06cfd87c4866a201202200ae888a8b8e259 (patch)
tree89afe662e8dc76fde674d3aa2028b40311d6e1ff
parent7b065c41e406fb22d39d1f7b4cfed96bf06dc591 (diff)
[3.0.x] Refs #31115 -- Added test for nested subquery that references related fields.
Thanks Dmitriy Gunchenko for the report and Simon Charette for the analysis and tests. Regression in 5a4d7285bd10bd40d9f7e574a7c421eb21094858. Fixed in 5a4d7285bd10bd40d9f7e574a7c421eb21094858. Backport of 45bcc6feac68165eb3642d3c308c74b4828e679e from master
-rw-r--r--tests/expressions/tests.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py
index 39dc2680fc..126cd586bb 100644
--- a/tests/expressions/tests.py
+++ b/tests/expressions/tests.py
@@ -537,6 +537,21 @@ class BasicExpressionsTests(TestCase):
)
self.assertCountEqual(contrived.values_list(), outer.values_list())
+ def test_nested_subquery_join_outer_ref(self):
+ inner = Employee.objects.filter(pk=OuterRef('ceo__pk')).values('pk')
+ qs = Employee.objects.annotate(
+ ceo_company=Subquery(
+ Company.objects.filter(
+ ceo__in=inner,
+ ceo__pk=OuterRef('pk'),
+ ).values('pk'),
+ ),
+ )
+ self.assertSequenceEqual(
+ qs.values_list('ceo_company', flat=True),
+ [self.example_inc.pk, self.foobar_ltd.pk, self.gmbh.pk],
+ )
+
def test_nested_subquery_outer_ref_2(self):
first = Time.objects.create(time='09:00')
second = Time.objects.create(time='17:00')