Loading django/db/models/base.py +1 −1 Original line number Diff line number Diff line Loading @@ -596,7 +596,7 @@ class Model(six.with_metaclass(ModelBase)): if field.rel and field.get_cache_name() in self.__dict__: rel_instance = getattr(self, field.get_cache_name()) local_val = getattr(db_instance, field.attname) related_val = getattr(rel_instance, field.related_field.attname) related_val = None if rel_instance is None else getattr(rel_instance, field.related_field.attname) if local_val != related_val: del self.__dict__[field.get_cache_name()] self._state.db = db_instance._state.db Loading tests/basic/tests.py +7 −0 Original line number Diff line number Diff line Loading @@ -735,6 +735,13 @@ class ModelRefreshTests(TestCase): self.assertFalse(hasattr(s3_copy.selfref, 'touched')) self.assertEqual(s3_copy.selfref, s2) def test_refresh_null_fk(self): s1 = SelfRef.objects.create() s2 = SelfRef.objects.create(selfref=s1) s2.selfref = None s2.refresh_from_db() self.assertEqual(s2.selfref, s1) def test_refresh_unsaved(self): pub_date = self._truncate_ms(datetime.now()) a = Article.objects.create(pub_date=pub_date) Loading Loading
django/db/models/base.py +1 −1 Original line number Diff line number Diff line Loading @@ -596,7 +596,7 @@ class Model(six.with_metaclass(ModelBase)): if field.rel and field.get_cache_name() in self.__dict__: rel_instance = getattr(self, field.get_cache_name()) local_val = getattr(db_instance, field.attname) related_val = getattr(rel_instance, field.related_field.attname) related_val = None if rel_instance is None else getattr(rel_instance, field.related_field.attname) if local_val != related_val: del self.__dict__[field.get_cache_name()] self._state.db = db_instance._state.db Loading
tests/basic/tests.py +7 −0 Original line number Diff line number Diff line Loading @@ -735,6 +735,13 @@ class ModelRefreshTests(TestCase): self.assertFalse(hasattr(s3_copy.selfref, 'touched')) self.assertEqual(s3_copy.selfref, s2) def test_refresh_null_fk(self): s1 = SelfRef.objects.create() s2 = SelfRef.objects.create(selfref=s1) s2.selfref = None s2.refresh_from_db() self.assertEqual(s2.selfref, s1) def test_refresh_unsaved(self): pub_date = self._truncate_ms(datetime.now()) a = Article.objects.create(pub_date=pub_date) Loading