8000 Fixed #36207 -- Cleared cached ForeignObject relations via refresh_fr… · django/django@ffd305f · GitHub
[go: up one dir, main page]

Skip to content

Commit ffd305f

Browse files
Fixed #36207 -- Cleared cached ForeignObject relations via refresh_from_db().
1 parent 84e9126 commit ffd305f

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

django/db/models/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -756,7 +756,7 @@ def refresh_from_db(self, using=None, fields=None, from_queryset=None):
756756

757757
db_instance = db_instance_qs.get()
758758
non_loaded_fields = db_instance.get_deferred_fields()
759-
for field in self._meta.concrete_fields:
759+
for field in self._meta.fields:
760760
if field.attname in non_loaded_fields:
761761
# This field wasn't refreshed - skip ahead.
762762
continue

tests/foreign_object/tests.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,14 @@ def test_prefetch_related_m2m_reverse_works(self):
450450
normal_groups_lists = [list(p.groups.all()) for p in Person.objects.all()]
451451
self.assertEqual(groups_lists, normal_groups_lists)
452452

453+
def test_refresh_foreign_object(self):
454+
member = Membership.objects.create(
455+
membership_country=self.usa, person=self.bob, group=self.cia
456+
)
457+
member.person = self.jim
458+
member.refresh_from_db()
459+
self.assertEqual(member.person, self.bob)
460+
453461
@translation.override("fi")
454462
def test_translations(self):
455463
a1 = Article.objects.create(pub_date=datetime.date.today())

0 commit comments

Comments
 (0)
0