summaryrefslogtreecommitdiff
path: root/tests/defer_regress
diff options
context:
space:
mode:
authorLovas Bence <lovas.bence@codehouse.hu>2014-02-15 12:24:20 +0100
committerTim Graham <timograham@gmail.com>2014-06-25 07:20:18 -0400
commit9385aa3198e7ab460990dd8f82e466fd243557a0 (patch)
treebcf276993f165e14252d2bff67fbf790afa01d4a /tests/defer_regress
parent815e7a57216b3e6ef716e924016acb09633ea8d1 (diff)
downloaddjango-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.py5
-rw-r--r--tests/defer_regress/tests.py15
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)