diff options
| author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2009-04-04 05:34:23 +0000 |
|---|---|---|
| committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2009-04-04 05:34:23 +0000 |
| commit | 0a89a57ffc491f2d1ff9a19e792739f67a945be3 (patch) | |
| tree | 30ae16f25deb0e011dba8c9f742bf49c4f2390a3 /tests | |
| parent | dded5f52cc1dbe0e58b64a3217e12e72da7bed23 (diff) | |
Fixed deferred fields and select_related() interaction.
Loading related models when some fields were deferred was resulting in
incorrect offsets being used into the results row, causing the wrong data to be
assigned to attributes.
Refs #10710. This fixes the first of two bugs reported there.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10383 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/regressiontests/defer_regress/models.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/regressiontests/defer_regress/models.py b/tests/regressiontests/defer_regress/models.py index 0cd6facff7..d7ba713061 100644 --- a/tests/regressiontests/defer_regress/models.py +++ b/tests/regressiontests/defer_regress/models.py @@ -17,6 +17,18 @@ class Item(models.Model): class RelatedItem(models.Model): item = models.ForeignKey(Item) +class Child(models.Model): + name = models.CharField(max_length=10) + value = models.IntegerField() + +class Leaf(models.Model): + name = models.CharField(max_length=10) + child = models.ForeignKey(Child) + value = models.IntegerField(default=42) + + 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__. @@ -66,7 +78,15 @@ True >>> r.item == i True +Some further checks for select_related() and inherited model behaviour +(regression for #10710). + +>>> c1 = Child.objects.create(name="c1", value=42) +>>> obj = Leaf.objects.create(name="l1", child=c1) +>>> obj = Leaf.objects.only("name", "child").select_related()[0] +>>> obj.child.name +u'c1' """ } |
