diff options
| author | Adam Johnson <me@adamj.eu> | 2024-11-30 08:03:55 +0000 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-12-02 16:01:37 +0100 |
| commit | 2f6b096b83c55317c7ceef2d8d5dc3bee33293dc (patch) | |
| tree | 7d17909df90c690f26dcda0eaa6b7fb0b54fd35b /django | |
| parent | 32b9e00b0c74b3af77c25215e2e2d1254b995355 (diff) | |
Fixed #35950 -- Restored refreshing of relations when fields deferred.
Thank you to Simon Charette and Sarah Boyce for the review.
Regression in 73df8b54a2fab53bec4c7573cda5ad8c869c2fd8.
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/base.py | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/django/db/models/base.py b/django/db/models/base.py index a20e88749f..d948cd2a1c 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -726,12 +726,13 @@ class Model(AltersData, metaclass=ModelBase): if fields is not None: db_instance_qs = db_instance_qs.only(*fields) elif deferred_fields: - fields = { - f.attname - for f in self._meta.concrete_fields - if f.attname not in deferred_fields - } - db_instance_qs = db_instance_qs.only(*fields) + db_instance_qs = db_instance_qs.only( + *{ + f.attname + for f in self._meta.concrete_fields + if f.attname not in deferred_fields + } + ) db_instance = db_instance_qs.get() non_loaded_fields = db_instance.get_deferred_fields() @@ -748,9 +749,9 @@ class Model(AltersData, metaclass=ModelBase): field.delete_cached_value(self) # Clear cached relations. - for field in self._meta.related_objects: - if (fields is None or field.name in fields) and field.is_cached(self): - field.delete_cached_value(self) + for rel in self._meta.related_objects: + if (fields is None or rel.name in fields) and rel.is_cached(self): + rel.delete_cached_value(self) # Clear cached private relations. for field in self._meta.private_fields: |
