diff options
author | Marc Tamlyn <marc.tamlyn@gmail.com> | 2013-10-15 13:15:02 +0100 |
---|---|---|
committer | Marc Tamlyn <marc.tamlyn@gmail.com> | 2013-10-15 15:59:36 +0100 |
commit | 349c12d3f5c015c2f8b36917da21230c2ac1acb4 (patch) | |
tree | d1a8dfb839ecd3d9c65f55fcb93a27a7ba773b25 /tests/select_related | |
parent | dd1ab8982be0ab8bd648b57c0bbc6a100a429695 (diff) | |
download | django-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.py | 9 | ||||
-rw-r--r-- | tests/select_related/tests.py | 11 |
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) |