summaryrefslogtreecommitdiff
path: root/tests/defer
diff options
context:
space:
mode:
authorCarlton Gibson <carlton.gibson@noumenal.es>2021-06-09 16:55:22 +0200
committerCarlton Gibson <carlton.gibson@noumenal.es>2021-06-15 12:01:28 +0200
commit225d96533a8e05debd402a2bfe566487cc27d95f (patch)
treeccffbb958d84e8a2a7db9788af93a69ae36748d1 /tests/defer
parent0c0240aba8c769406248b5601126b891998fabb7 (diff)
Fixed #30427, Fixed #16176 -- Corrected setting descriptor in Field.contribute_to_class().
Co-authored-by: Jarek Glowacki <jarekwg@gmail.com>
Diffstat (limited to 'tests/defer')
-rw-r--r--tests/defer/models.py13
-rw-r--r--tests/defer/tests.py6
2 files changed, 19 insertions, 0 deletions
diff --git a/tests/defer/models.py b/tests/defer/models.py
index fc14f43393..fea673643b 100644
--- a/tests/defer/models.py
+++ b/tests/defer/models.py
@@ -44,3 +44,16 @@ class RefreshPrimaryProxy(Primary):
if fields.intersection(deferred_fields):
fields = fields.union(deferred_fields)
super().refresh_from_db(using, fields, **kwargs)
+
+
+class ShadowParent(models.Model):
+ """
+ ShadowParent declares a scalar, rather than a field. When this is
+ overridden, the field value, rather than the scalar value must still be
+ used when the field is deferred.
+ """
+ name = 'aphrodite'
+
+
+class ShadowChild(ShadowParent):
+ name = models.CharField(default='adonis', max_length=6)
diff --git a/tests/defer/tests.py b/tests/defer/tests.py
index b85475f74f..4058fadde9 100644
--- a/tests/defer/tests.py
+++ b/tests/defer/tests.py
@@ -3,6 +3,7 @@ from django.test import TestCase
from .models import (
BigChild, Child, ChildProxy, Primary, RefreshPrimaryProxy, Secondary,
+ ShadowChild,
)
@@ -165,6 +166,11 @@ class DeferTests(AssertionMixin, TestCase):
self.assertEqual(obj.name, "c1")
self.assertEqual(obj.value, "foo")
+ def test_defer_of_overridden_scalar(self):
+ ShadowChild.objects.create()
+ obj = ShadowChild.objects.defer('name').get()
+ self.assertEqual(obj.name, 'adonis')
+
class BigChildDeferTests(AssertionMixin, TestCase):
@classmethod