diff options
| author | Carlton Gibson <carlton.gibson@noumenal.es> | 2021-06-09 16:55:22 +0200 |
|---|---|---|
| committer | Carlton Gibson <carlton.gibson@noumenal.es> | 2021-06-15 12:01:28 +0200 |
| commit | 225d96533a8e05debd402a2bfe566487cc27d95f (patch) | |
| tree | ccffbb958d84e8a2a7db9788af93a69ae36748d1 /tests/defer | |
| parent | 0c0240aba8c769406248b5601126b891998fabb7 (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.py | 13 | ||||
| -rw-r--r-- | tests/defer/tests.py | 6 |
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 |
