diff options
| author | Jon Dufresne <jon.dufresne@gmail.com> | 2018-01-30 07:43:53 -0800 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-01-30 10:43:53 -0500 |
| commit | 136bf5c2142ae3261669d02e2dd050c3141f7f2f (patch) | |
| tree | 81781bf9c8401ca911cfd5037c2786137bc13459 /django | |
| parent | 46b3e3ffdc25b5a42762df20e536401fc512c5f3 (diff) | |
Fixed #29076 -- Made Model.refresh_from_db() clear cached relationships even if the related id doesn't change.
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/base.py | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/django/db/models/base.py b/django/db/models/base.py index f88690f225..8d4e19fa5a 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -609,13 +609,9 @@ class Model(metaclass=ModelBase): # This field wasn't refreshed - skip ahead. continue setattr(self, field.attname, getattr(db_instance, field.attname)) - # Throw away stale foreign key references. + # Clear cached foreign keys. if field.is_relation and field.is_cached(self): - rel_instance = field.get_cached_value(self) - local_val = getattr(db_instance, field.attname) - related_val = None if rel_instance is None else getattr(rel_instance, field.target_field.attname) - if local_val != related_val or (local_val is None and related_val is None): - field.delete_cached_value(self) + field.delete_cached_value(self) # Clear cached relations. for field in self._meta.related_objects: |
