summaryrefslogtreecommitdiff
path: root/django/db/models/sql
diff options
context:
space:
mode:
Diffstat (limited to 'django/db/models/sql')
-rw-r--r--django/db/models/sql/query.py11
1 files changed, 5 insertions, 6 deletions
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index f332d83946..f0865f5f78 100644
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -1249,12 +1249,11 @@ class Query(BaseExpression):
@property
def _subquery_fields_len(self):
- if self.has_select_fields:
- return sum(
- len(self.model._meta.pk_fields) if field == "pk" else 1
- for field in self.selected
- )
- return len(self.model._meta.pk_fields)
+ if not self.has_select_fields or not self.select:
+ return len(self.model._meta.pk_fields)
+ return len(self.select) + sum(
+ len(expr.targets) - 1 for expr in self.select if isinstance(expr, ColPairs)
+ )
def resolve_expression(self, query, *args, **kwargs):
clone = self.clone()