diff options
| author | David Wobrock <david.wobrock@gmail.com> | 2021-07-19 23:02:52 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-07-20 12:15:29 +0200 |
| commit | fd999318ad78613227cdb7c5656345d9e216802b (patch) | |
| tree | f6bb87998016556a388aacd9a2b7f6efbffa1bee /django/db/models/sql/query.py | |
| parent | 96706d76cdcf78bd5c17d19033a1c05fef0c659d (diff) | |
Fixed #32704 -- Fixed list of deferred fields when chaining QuerySet.defer() after only().
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 8837881579..af5f684943 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -2086,7 +2086,12 @@ class Query(BaseExpression): self.deferred_loading = existing.union(field_names), True else: # Remove names from the set of any existing "immediate load" names. - self.deferred_loading = existing.difference(field_names), False + if new_existing := existing.difference(field_names): + self.deferred_loading = new_existing, False + else: + self.clear_deferred_loading() + if new_only := set(field_names).difference(existing): + self.deferred_loading = new_only, True def add_immediate_loading(self, field_names): """ |
