From bfa080f402ddfc383abdbac96fa198e7f2f8ec59 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Sat, 20 Mar 2010 15:02:59 +0000 Subject: Fixed #12937 -- Corrected the operation of select_related() when following an reverse relation on an inherited model. Thanks to subsume for the report. git-svn-id: http://code.djangoproject.com/svn/django/trunk@12814 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/select_related_onetoone/models.py | 3 +-- tests/regressiontests/select_related_onetoone/tests.py | 15 +++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'tests') diff --git a/tests/regressiontests/select_related_onetoone/models.py b/tests/regressiontests/select_related_onetoone/models.py index 6b46366530..3d6da9b4c5 100644 --- a/tests/regressiontests/select_related_onetoone/models.py +++ b/tests/regressiontests/select_related_onetoone/models.py @@ -43,8 +43,7 @@ class StatDetails(models.Model): class AdvancedUserStat(UserStat): - pass - + karma = models.IntegerField() class Image(models.Model): name = models.CharField(max_length=100) diff --git a/tests/regressiontests/select_related_onetoone/tests.py b/tests/regressiontests/select_related_onetoone/tests.py index 5a4a3e4ed6..4ccb58440a 100644 --- a/tests/regressiontests/select_related_onetoone/tests.py +++ b/tests/regressiontests/select_related_onetoone/tests.py @@ -2,7 +2,7 @@ from django import db from django.conf import settings from django.test import TestCase -from models import (User, UserProfile, UserStat, UserStatResult, StatDetails, +from models import (User, UserProfile, UserStat, UserStatResult, StatDetails, AdvancedUserStat, Image, Product) class ReverseSelectRelatedTestCase(TestCase): @@ -22,7 +22,7 @@ class ReverseSelectRelatedTestCase(TestCase): user2 = User.objects.create(username="bob") results2 = UserStatResult.objects.create(results='moar results') - advstat = AdvancedUserStat.objects.create(user=user2, posts=200, + advstat = AdvancedUserStat.objects.create(user=user2, posts=200, karma=5, results=results2) StatDetails.objects.create(base_stats=advstat, comments=250) @@ -74,18 +74,21 @@ class ReverseSelectRelatedTestCase(TestCase): self.assertQueries(2) def test_follow_from_child_class(self): - stat = AdvancedUserStat.objects.select_related("statdetails").get(posts=200) + stat = AdvancedUserStat.objects.select_related('user', 'statdetails').get(posts=200) self.assertEqual(stat.statdetails.comments, 250) + self.assertEqual(stat.user.username, 'bob') self.assertQueries(1) def test_follow_inheritance(self): - stat = UserStat.objects.select_related('advanceduserstat').get(posts=200) + stat = UserStat.objects.select_related('user', 'advanceduserstat').get(posts=200) self.assertEqual(stat.advanceduserstat.posts, 200) + self.assertEqual(stat.user.username, 'bob') + self.assertEqual(stat.advanceduserstat.user.username, 'bob') self.assertQueries(1) - + def test_nullable_relation(self): im = Image.objects.create(name="imag1") p1 = Product.objects.create(name="Django Plushie", image=im) p2 = Product.objects.create(name="Talking Django Plushie") - + self.assertEqual(len(Product.objects.select_related("image")), 2) -- cgit v1.3