diff options
author | Lovas Bence <lovas.bence@codehouse.hu> | 2014-02-15 12:24:20 +0100 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2014-06-25 07:20:18 -0400 |
commit | 9385aa3198e7ab460990dd8f82e466fd243557a0 (patch) | |
tree | bcf276993f165e14252d2bff67fbf790afa01d4a /tests/defer_regress | |
parent | 815e7a57216b3e6ef716e924016acb09633ea8d1 (diff) | |
download | django-9385aa3198e7ab460990dd8f82e466fd243557a0.tar.gz |
Fixed #22050 -- Fixed defer fields on proxy related models.
Diffstat (limited to 'tests/defer_regress')
-rw-r--r-- | tests/defer_regress/models.py | 5 | ||||
-rw-r--r-- | tests/defer_regress/tests.py | 15 |
2 files changed, 19 insertions, 1 deletions
diff --git a/tests/defer_regress/models.py b/tests/defer_regress/models.py index f58a10215e..58693c83db 100644 --- a/tests/defer_regress/models.py +++ b/tests/defer_regress/models.py @@ -21,6 +21,11 @@ class RelatedItem(models.Model): item = models.ForeignKey(Item) +class ProxyRelated(RelatedItem): + class Meta: + proxy = True + + class Child(models.Model): name = models.CharField(max_length=10) value = models.IntegerField() diff --git a/tests/defer_regress/tests.py b/tests/defer_regress/tests.py index 97d7e7e302..f2d4e227b9 100644 --- a/tests/defer_regress/tests.py +++ b/tests/defer_regress/tests.py @@ -10,7 +10,9 @@ from django.test import TestCase, override_settings from .models import ( ResolveThis, Item, RelatedItem, Child, Leaf, Proxy, SimpleItem, Feature, - ItemAndSimpleItem, OneToOneItem, SpecialFeature, Location, Request) + ItemAndSimpleItem, OneToOneItem, SpecialFeature, Location, Request, + ProxyRelated, +) class DeferRegressionTest(TestCase): @@ -207,6 +209,17 @@ class DeferRegressionTest(TestCase): self.assertEqual(obj.item, item2) self.assertEqual(obj.item_id, item2.id) + def test_proxy_model_defer_with_selected_related(self): + # Regression for #22050 + item = Item.objects.create(name="first", value=47) + related = RelatedItem.objects.create(item=item) + # Defer fields with only() + obj = ProxyRelated.objects.all().select_related().only('item__name')[0] + with self.assertNumQueries(0): + self.assertEqual(obj.item.name, "first") + with self.assertNumQueries(1): + self.assertEqual(obj.item.value, 47) + def test_only_with_select_related(self): # Test for #17485. item = SimpleItem.objects.create(name='first', value=47) |