mirror of
https://github.com/django/django.git
synced 2025-05-15 11:26:31 +00:00
Fixed #36207 -- Cleared cached ForeignObject relations via refresh_from_db().
This commit is contained in:
parent
f5197be818
commit
69ab6e5896
@ -756,11 +756,12 @@ class Model(AltersData, metaclass=ModelBase):
|
||||
|
||||
db_instance = db_instance_qs.get()
|
||||
non_loaded_fields = db_instance.get_deferred_fields()
|
||||
for field in self._meta.concrete_fields:
|
||||
for field in self._meta.fields:
|
||||
if field.attname in non_loaded_fields:
|
||||
# This field wasn't refreshed - skip ahead.
|
||||
continue
|
||||
setattr(self, field.attname, getattr(db_instance, field.attname))
|
||||
if field.concrete:
|
||||
setattr(self, field.attname, getattr(db_instance, field.attname))
|
||||
# Clear or copy cached foreign keys.
|
||||
if field.is_relation:
|
||||
if field.is_cached(db_instance):
|
||||
|
@ -450,6 +450,15 @@ class MultiColumnFKTests(TestCase):
|
||||
normal_groups_lists = [list(p.groups.all()) for p in Person.objects.all()]
|
||||
self.assertEqual(groups_lists, normal_groups_lists)
|
||||
|
||||
def test_refresh_foreign_object(self):
|
||||
member = Membership.objects.create(
|
||||
membership_country=self.usa, person=self.bob, group=self.cia
|
||||
)
|
||||
member.person = self.jim
|
||||
with self.assertNumQueries(1):
|
||||
member.refresh_from_db()
|
||||
self.assertEqual(member.person, self.bob)
|
||||
|
||||
@translation.override("fi")
|
||||
def test_translations(self):
|
||||
a1 = Article.objects.create(pub_date=datetime.date.today())
|
||||
|
Loading…
x
Reference in New Issue
Block a user