summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorAdam Johnson <me@adamj.eu>2024-11-30 08:03:55 +0000
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-12-02 16:01:37 +0100
commit2f6b096b83c55317c7ceef2d8d5dc3bee33293dc (patch)
tree7d17909df90c690f26dcda0eaa6b7fb0b54fd35b /django
parent32b9e00b0c74b3af77c25215e2e2d1254b995355 (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.py19
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: