From 13a8884a08342817094cc6287c7ae346100a297d Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Sun, 1 Sep 2019 14:35:27 -0400 Subject: Fixed #30739 -- Fixed exclusion of multi-valued lookup against outer rhs. OuterRef right hand sides have to be nested, just like F rhs have to, during the subquery pushdown split_exclude performs to ensure they are resolved against the outer query aliases. --- django/db/models/sql/query.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'django/db/models/sql') diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index 35f3c5e1ea..8e55bd092d 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -1702,7 +1702,9 @@ class Query(BaseExpression): handle. """ filter_lhs, filter_rhs = filter_expr - if isinstance(filter_rhs, F): + if isinstance(filter_rhs, OuterRef): + filter_expr = (filter_lhs, OuterRef(filter_rhs)) + elif isinstance(filter_rhs, F): filter_expr = (filter_lhs, OuterRef(filter_rhs.name)) # Generate the inner query. query = Query(self.model) -- cgit v1.3