mirror of
https://github.com/django/django.git
synced 2025-05-15 19:36:30 +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()
|
db_instance = db_instance_qs.get()
|
||||||
non_loaded_fields = db_instance.get_deferred_fields()
|
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:
|
if field.attname in non_loaded_fields:
|
||||||
# This field wasn't refreshed - skip ahead.
|
# This field wasn't refreshed - skip ahead.
|
||||||
continue
|
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.
|
# Clear or copy cached foreign keys.
|
||||||
if field.is_relation:
|
if field.is_relation:
|
||||||
if field.is_cached(db_instance):
|
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()]
|
normal_groups_lists = [list(p.groups.all()) for p in Person.objects.all()]
|
||||||
self.assertEqual(groups_lists, normal_groups_lists)
|
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")
|
@translation.override("fi")
|
||||||
def test_translations(self):
|
def test_translations(self):
|
||||||
a1 = Article.objects.create(pub_date=datetime.date.today())
|
a1 = Article.objects.create(pub_date=datetime.date.today())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user