summaryrefslogtreecommitdiff
path: root/tests/select_related
diff options
context:
space:
mode:
authorMarc Tamlyn <marc.tamlyn@gmail.com>2013-10-15 13:15:02 +0100
committerMarc Tamlyn <marc.tamlyn@gmail.com>2013-10-15 15:59:36 +0100
commit349c12d3f5c015c2f8b36917da21230c2ac1acb4 (patch)
treed1a8dfb839ecd3d9c65f55fcb93a27a7ba773b25 /tests/select_related
parentdd1ab8982be0ab8bd648b57c0bbc6a100a429695 (diff)
downloaddjango-349c12d3f5c015c2f8b36917da21230c2ac1acb4.tar.gz
Fixed #16855 -- select_related() chains as expected.
select_related('foo').select_related('bar') is now equivalent to select_related('foo', 'bar'). Also reworded docs to recommend select_related(*fields) over select_related()
Diffstat (limited to 'tests/select_related')
-rw-r--r--tests/select_related/models.py9
-rw-r--r--tests/select_related/tests.py11
2 files changed, 19 insertions, 1 deletions
diff --git a/tests/select_related/models.py b/tests/select_related/models.py
index ec41957adf..11ef7db91f 100644
--- a/tests/select_related/models.py
+++ b/tests/select_related/models.py
@@ -66,3 +66,12 @@ class Species(models.Model):
genus = models.ForeignKey(Genus)
def __str__(self):
return self.name
+
+# and we'll invent a new thing so we have a model with two foreign keys
+@python_2_unicode_compatible
+class HybridSpecies(models.Model):
+ name = models.CharField(max_length=50)
+ parent_1 = models.ForeignKey(Species, related_name='child_1')
+ parent_2 = models.ForeignKey(Species, related_name='child_2')
+ def __str__(self):
+ return self.name
diff --git a/tests/select_related/tests.py b/tests/select_related/tests.py
index f07e28df99..8949d99788 100644
--- a/tests/select_related/tests.py
+++ b/tests/select_related/tests.py
@@ -2,7 +2,7 @@ from __future__ import unicode_literals
from django.test import TestCase
-from .models import Domain, Kingdom, Phylum, Klass, Order, Family, Genus, Species
+from .models import Domain, Kingdom, Phylum, Klass, Order, Family, Genus, Species, HybridSpecies
class SelectRelatedTests(TestCase):
@@ -144,3 +144,12 @@ class SelectRelatedTests(TestCase):
def test_none_clears_list(self):
queryset = Species.objects.select_related('genus').select_related(None)
self.assertEqual(queryset.query.select_related, False)
+
+ def test_chaining(self):
+ parent_1, parent_2 = Species.objects.all()[:2]
+ HybridSpecies.objects.create(name='hybrid', parent_1=parent_1, parent_2=parent_2)
+ queryset = HybridSpecies.objects.select_related('parent_1').select_related('parent_2')
+ with self.assertNumQueries(1):
+ obj = queryset[0]
+ self.assertEquals(obj.parent_1, parent_1)
+ self.assertEquals(obj.parent_2, parent_2)