summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/defer_regress/models.py29
1 files changed, 27 insertions, 2 deletions
diff --git a/tests/regressiontests/defer_regress/models.py b/tests/regressiontests/defer_regress/models.py
index c46d7ce176..0cd6facff7 100644
--- a/tests/regressiontests/defer_regress/models.py
+++ b/tests/regressiontests/defer_regress/models.py
@@ -6,7 +6,7 @@ from django.conf import settings
from django.db import connection, models
class Item(models.Model):
- name = models.CharField(max_length=10)
+ name = models.CharField(max_length=15)
text = models.TextField(default="xyzzy")
value = models.IntegerField()
other_value = models.IntegerField(default=0)
@@ -14,6 +14,9 @@ class Item(models.Model):
def __unicode__(self):
return self.name
+class RelatedItem(models.Model):
+ item = models.ForeignKey(Item)
+
__test__ = {"regression_tests": """
Deferred fields should really be deferred and not accidentally use the field's
default value just because they aren't passed to __init__.
@@ -39,9 +42,31 @@ True
u"xyzzy"
>>> len(connection.queries) == num + 2 # Effect of text lookup.
True
+>>> obj.text
+u"xyzzy"
+>>> len(connection.queries) == num + 2
+True
>>> settings.DEBUG = False
+Regression test for #10695. Make sure different instances don't inadvertently
+share data in the deferred descriptor objects.
+
+>>> i = Item.objects.create(name="no I'm first", value=37)
+>>> items = Item.objects.only('value').order_by('-value')
+>>> items[0].name
+u'first'
+>>> items[1].name
+u"no I'm first"
+
+>>> _ = RelatedItem.objects.create(item=i)
+>>> r = RelatedItem.objects.defer('item').get()
+>>> r.item_id == i.id
+True
+>>> r.item == i
+True
+
+
+
"""
}
-