From 0e65abd2d916dca4cc9aa7c98e87a71440443498 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Fri, 21 Jun 2024 02:07:54 -0400 Subject: [PATCH] Refs #28900 -- Made Query.has_select_fields a computed property. This should ensure it never drifts from Query.selected while maintaining backward compatibility. --- django/db/models/sql/query.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index ce97ebe1d1..438bb5ddbd 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -260,7 +260,6 @@ class Query(BaseExpression): select_for_update_of = () select_for_no_key_update = False select_related = False - has_select_fields = False # Arbitrary limit for select_related to prevents infinite recursion. max_depth = 5 # Holds the selects defined by a call to values() or values_list() @@ -2448,11 +2447,14 @@ class Query(BaseExpression): self.extra_select_mask = set(names) self._extra_select_cache = None + @property + def has_select_fields(self): + return self.selected is not None + def set_values(self, fields): self.select_related = False self.clear_deferred_loading() self.clear_select_fields() - self.has_select_fields = True selected = {} if fields: