summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRamiro Morales <cramm0@gmail.com>2011-05-15 00:56:01 +0000
committerRamiro Morales <cramm0@gmail.com>2011-05-15 00:56:01 +0000
commit07bfc76ecf22bfcd0cdbabe6af8639db2a0253dd (patch)
treeca7fdfe64642e263eb8cdbe3e5cc4148be96c747 /tests
parentc5cb2fabd260749f33a78bcdb5909e3fcca90cfc (diff)
Fixed #15790 -- Fixed QuerySet only() and defer() methods behavior with proxy models. Thanks Michal Modzelewzki for the report and patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16228 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/defer_regress/models.py4
-rw-r--r--tests/regressiontests/defer_regress/tests.py19
2 files changed, 22 insertions, 1 deletions
diff --git a/tests/regressiontests/defer_regress/models.py b/tests/regressiontests/defer_regress/models.py
index 8db8c29960..4e4ab0a515 100644
--- a/tests/regressiontests/defer_regress/models.py
+++ b/tests/regressiontests/defer_regress/models.py
@@ -34,3 +34,7 @@ class Leaf(models.Model):
class ResolveThis(models.Model):
num = models.FloatField()
name = models.CharField(max_length=16)
+
+class Proxy(Item):
+ class Meta:
+ proxy = True
diff --git a/tests/regressiontests/defer_regress/tests.py b/tests/regressiontests/defer_regress/tests.py
index 6f1b023b5b..fbcf85e078 100644
--- a/tests/regressiontests/defer_regress/tests.py
+++ b/tests/regressiontests/defer_regress/tests.py
@@ -7,7 +7,7 @@ from django.db import connection
from django.db.models.loading import cache
from django.test import TestCase
-from models import ResolveThis, Item, RelatedItem, Child, Leaf
+from models import ResolveThis, Item, RelatedItem, Child, Leaf, Proxy
class DeferRegressionTest(TestCase):
@@ -111,6 +111,7 @@ class DeferRegressionTest(TestCase):
Child,
Item,
Leaf,
+ Proxy,
RelatedItem,
ResolveThis,
]
@@ -139,6 +140,7 @@ class DeferRegressionTest(TestCase):
"Leaf_Deferred_name_value",
"Leaf_Deferred_second_child_value",
"Leaf_Deferred_value",
+ "Proxy",
"RelatedItem",
"RelatedItem_Deferred_",
"RelatedItem_Deferred_item_id",
@@ -146,6 +148,21 @@ class DeferRegressionTest(TestCase):
]
)
+ def test_only_and_defer_usage_on_proxy_models(self):
+ # Regression for #15790 - only() broken for proxy models
+ proxy = Proxy.objects.create(name="proxy", value=42)
+
+ msg = 'QuerySet.only() return bogus results with proxy models'
+ dp = Proxy.objects.only('other_value').get(pk=proxy.pk)
+ self.assertEqual(dp.name, proxy.name, msg=msg)
+ self.assertEqual(dp.value, proxy.value, msg=msg)
+
+ # also test things with .defer()
+ msg = 'QuerySet.defer() return bogus results with proxy models'
+ dp = Proxy.objects.defer('name', 'text', 'value').get(pk=proxy.pk)
+ self.assertEqual(dp.name, proxy.name, msg=msg)
+ self.assertEqual(dp.value, proxy.value, msg=msg)
+
def test_resolve_columns(self):
rt = ResolveThis.objects.create(num=5.0, name='Foobar')
qs = ResolveThis.objects.defer('num')