diff options
| author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2009-03-22 01:45:22 +0000 |
|---|---|---|
| committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2009-03-22 01:45:22 +0000 |
| commit | 5ac154e06568b9815e85b32f144ab4ee10190a61 (patch) | |
| tree | f95391869bfad2011b0a7cb17089b33005c5733d /tests | |
| parent | 10923b42b33dc6b756d06b235c135bc40a35435a (diff) | |
Fixed deferred loading of fields with default values.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10113 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/regressiontests/defer_regress/__init__.py | 0 | ||||
| -rw-r--r-- | tests/regressiontests/defer_regress/models.py | 47 |
2 files changed, 47 insertions, 0 deletions
diff --git a/tests/regressiontests/defer_regress/__init__.py b/tests/regressiontests/defer_regress/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/regressiontests/defer_regress/__init__.py diff --git a/tests/regressiontests/defer_regress/models.py b/tests/regressiontests/defer_regress/models.py new file mode 100644 index 0000000000..c46d7ce176 --- /dev/null +++ b/tests/regressiontests/defer_regress/models.py @@ -0,0 +1,47 @@ +""" +Regression tests for defer() / only() behavior. +""" + +from django.conf import settings +from django.db import connection, models + +class Item(models.Model): + name = models.CharField(max_length=10) + text = models.TextField(default="xyzzy") + value = models.IntegerField() + other_value = models.IntegerField(default=0) + + def __unicode__(self): + return self.name + +__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__. + +>>> settings.DEBUG = True +>>> _ = Item.objects.create(name="first", value=42) +>>> obj = Item.objects.only("name", "other_value").get(name="first") + +# Accessing "name" doesn't trigger a new database query. Accessing "value" or +# "text" should. +>>> num = len(connection.queries) +>>> obj.name +u"first" +>>> obj.other_value +0 +>>> len(connection.queries) == num +True +>>> obj.value +42 +>>> len(connection.queries) == num + 1 # Effect of values lookup. +True +>>> obj.text +u"xyzzy" +>>> len(connection.queries) == num + 2 # Effect of text lookup. +True + +>>> settings.DEBUG = False + +""" +} + |
