mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
[5.1.x] Fixed #35950 -- Restored refreshing of relations when fields deferred.
Thank you to Simon Charette and Sarah Boyce for the review. Regression in73df8b54a2. Backport of2f6b096b83from main.
This commit is contained in:
committed by
Sarah Boyce
parent
ee2698dcca
commit
6e3e7353e0
@@ -57,6 +57,15 @@ class GenericForeignKeyTests(TestCase):
|
||||
self.assertIsNot(answer.question, old_question_obj)
|
||||
self.assertEqual(answer.question, old_question_obj)
|
||||
|
||||
def test_clear_cached_generic_relation_when_deferred(self):
|
||||
question = Question.objects.create(text="question")
|
||||
Answer.objects.create(text="answer", question=question)
|
||||
answer = Answer.objects.defer("text").get()
|
||||
old_question_obj = answer.question
|
||||
# The reverse relation is refreshed even when the text field is deferred.
|
||||
answer.refresh_from_db()
|
||||
self.assertIsNot(answer.question, old_question_obj)
|
||||
|
||||
|
||||
class GenericRelationTests(TestCase):
|
||||
def test_value_to_string(self):
|
||||
|
||||
@@ -290,6 +290,14 @@ class TestDefer2(AssertionMixin, TestCase):
|
||||
self.assertEqual(rf2.name, "new foo")
|
||||
self.assertEqual(rf2.value, "new bar")
|
||||
|
||||
def test_refresh_when_one_field_deferred(self):
|
||||
s = Secondary.objects.create()
|
||||
PrimaryOneToOne.objects.create(name="foo", value="bar", related=s)
|
||||
s = Secondary.objects.defer("first").get()
|
||||
p_before = s.primary_o2o
|
||||
s.refresh_from_db()
|
||||
self.assertIsNot(s.primary_o2o, p_before)
|
||||
|
||||
|
||||
class InvalidDeferTests(SimpleTestCase):
|
||||
def test_invalid_defer(self):
|
||||
|
||||
Reference in New Issue
Block a user