diff options
| author | James Timmins <jameshtimmins@gmail.com> | 2019-09-19 19:20:40 -0700 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-09-20 11:14:39 +0200 |
| commit | 3697ddbf7526e85483067db5a2fde93f661da360 (patch) | |
| tree | 29fe1740f7109dc9cd51f621cfdd5d91873b7632 /django | |
| parent | def1857d9b7c79a48c0c3ecf997321fa76b479d9 (diff) | |
[3.0.x] Fixed #30771 -- Fixed exact lookup against queries with selected columns.
Use pre-existing select fields (and thereby GROUP BY fields) from
subquery if they were specified, instead of always defaulting to pk.
Thanks Aur Saraf for the report and Simon Charette for guidance.
Backport of 0719edcd5fed56157ffb3323a8f634aa5e8f9a80 from master
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/lookups.py | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/django/db/models/lookups.py b/django/db/models/lookups.py index 105dc93251..2683d8971a 100644 --- a/django/db/models/lookups.py +++ b/django/db/models/lookups.py @@ -262,9 +262,9 @@ class Exact(FieldGetDbPrepValueMixin, BuiltinLookup): from django.db.models.sql.query import Query if isinstance(self.rhs, Query): if self.rhs.has_limit_one(): - # The subquery must select only the pk. - self.rhs.clear_select_clause() - self.rhs.add_fields(['pk']) + if not self.rhs.has_select_fields: + self.rhs.clear_select_clause() + self.rhs.add_fields(['pk']) else: raise ValueError( 'The QuerySet value for an exact lookup must be limited to ' |
