summaryrefslogtreecommitdiff
path: root/tests/select_related_regress
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2013-10-01 19:27:20 +0300
committerAnssi Kääriäinen <akaariai@gmail.com>2013-10-01 19:29:48 +0300
commit8d4b1629d4434b8b30078d064e74689ca8906f37 (patch)
treebf4f24097f7842c4eb54a62551efdea3d512dfdf /tests/select_related_regress
parent32e40bbe7115a14947421f9380e64cf34254f86d (diff)
downloaddjango-8d4b1629d4434b8b30078d064e74689ca8906f37.tar.gz
Fixed #10733 -- select_related().only() failure
The bug was reported pre 1.1, and somewhere along the way it has been fixed. So, this is tests only addition.
Diffstat (limited to 'tests/select_related_regress')
-rw-r--r--tests/select_related_regress/models.py18
-rw-r--r--tests/select_related_regress/tests.py18
2 files changed, 35 insertions, 1 deletions
diff --git a/tests/select_related_regress/models.py b/tests/select_related_regress/models.py
index 620b8eb5ea..f98b8269a8 100644
--- a/tests/select_related_regress/models.py
+++ b/tests/select_related_regress/models.py
@@ -108,3 +108,21 @@ class Hen(Fowl):
class Chick(Fowl):
mother = models.ForeignKey(Hen)
+
+class Base(models.Model):
+ name = models.CharField(max_length=10)
+ lots_of_text = models.TextField()
+
+ class Meta:
+ abstract = True
+
+class A(Base):
+ a_field = models.CharField(max_length=10)
+
+class B(Base):
+ b_field = models.CharField(max_length=10)
+
+class C(Base):
+ c_a = models.ForeignKey(A)
+ c_b = models.ForeignKey(B)
+ is_published = models.BooleanField()
diff --git a/tests/select_related_regress/tests.py b/tests/select_related_regress/tests.py
index da47cb771f..08ada4515e 100644
--- a/tests/select_related_regress/tests.py
+++ b/tests/select_related_regress/tests.py
@@ -5,7 +5,7 @@ from django.utils import six
from .models import (Building, Child, Device, Port, Item, Country, Connection,
ClientStatus, State, Client, SpecialClient, TUser, Person, Student,
- Organizer, Class, Enrollment, Hen, Chick)
+ Organizer, Class, Enrollment, Hen, Chick, Base, A, B, C)
class SelectRelatedRegressTests(TestCase):
@@ -173,3 +173,19 @@ class SelectRelatedRegressTests(TestCase):
self.assertEqual(Chick.objects.all()[0].mother.name, 'Hen')
self.assertEqual(Chick.objects.select_related()[0].mother.name, 'Hen')
+
+ def test_ticket_10733(self):
+ a = A.objects.create(name='a', lots_of_text='lots_of_text_a', a_field='a_field')
+ b = B.objects.create(name='b', lots_of_text='lots_of_text_b', b_field='b_field')
+ c = C.objects.create(name='c', lots_of_text='lots_of_text_c', is_published=True,
+ c_a=a, c_b=b)
+ results = C.objects.all().only('name', 'lots_of_text', 'c_a', 'c_b', 'c_b__lots_of_text',
+ 'c_a__name', 'c_b__name').select_related()
+ self.assertQuerysetEqual(results, [c], lambda x: x)
+ with self.assertNumQueries(0):
+ qs_c = results[0]
+ self.assertEqual(qs_c.name, 'c')
+ self.assertEqual(qs_c.lots_of_text, 'lots_of_text_c')
+ self.assertEqual(qs_c.c_b.lots_of_text, 'lots_of_text_b')
+ self.assertEqual(qs_c.c_a.name, 'a')
+ self.assertEqual(qs_c.c_b.name, 'b')