diff options
| author | Simon Charette <charette.s@gmail.com> | 2019-03-08 02:06:34 -0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2019-03-23 09:48:28 -0400 |
| commit | f19a4945e1191e1696f1ad8e6cdc6f939c702728 (patch) | |
| tree | 05a6d32438d46c504ff933ab90c859d0a3087a8d /django/db/models/sql/query.py | |
| parent | cbf7e71558c94ce1c327b683768a18a25d82d197 (diff) | |
Fixed #21703 -- Fixed a crash when excluding a related field with a F().
Diffstat (limited to 'django/db/models/sql/query.py')
| -rw-r--r-- | django/db/models/sql/query.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index eac61106c6..4f2fe5acb5 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -21,7 +21,9 @@ from django.core.exceptions import ( from django.db import DEFAULT_DB_ALIAS, NotSupportedError, connections from django.db.models.aggregates import Count from django.db.models.constants import LOOKUP_SEP -from django.db.models.expressions import BaseExpression, Col, F, Ref, SimpleCol +from django.db.models.expressions import ( + BaseExpression, Col, F, OuterRef, Ref, SimpleCol, +) from django.db.models.fields import Field from django.db.models.fields.related_lookups import MultiColSource from django.db.models.lookups import Lookup @@ -1639,6 +1641,9 @@ class Query(BaseExpression): saner null handling, and is easier for the backend's optimizer to handle. """ + filter_lhs, filter_rhs = filter_expr + if isinstance(filter_rhs, F): + filter_expr = (filter_lhs, OuterRef(filter_rhs.name)) # Generate the inner query. query = Query(self.model) query.add_filter(filter_expr) |
