summaryrefslogtreecommitdiff
path: root/tests/generic_relations
diff options
context:
space:
mode:
authorcan <cansarigol@derinbilgi.com.tr>2019-05-29 20:24:37 +0300
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-05-31 18:11:55 +0200
commitdffa3e1992562ba60512d96d1eb5859ffff2ceb5 (patch)
treece66a812bfa12e19e738bf105b62dbfdef7a2335 /tests/generic_relations
parentf66021f3f773023d0c61d2537d5dd1e5e1740537 (diff)
downloaddjango-dffa3e1992562ba60512d96d1eb5859ffff2ceb5.tar.gz
Fixed #30493 -- Fixed prefetch_related() for GenericRelation with different content types.
Co-Authored-By: Mariusz Felisiak <felisiak.mariusz@gmail.com> Thanks Simon Charette for the review.
Diffstat (limited to 'tests/generic_relations')
-rw-r--r--tests/generic_relations/tests.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/generic_relations/tests.py b/tests/generic_relations/tests.py
index 2e99c5b5cf..7c0db95908 100644
--- a/tests/generic_relations/tests.py
+++ b/tests/generic_relations/tests.py
@@ -546,6 +546,24 @@ class GenericRelationsTests(TestCase):
platypus.tags.remove(weird_tag)
self.assertSequenceEqual(platypus.tags.all(), [furry_tag])
+ def test_prefetch_related_different_content_types(self):
+ TaggedItem.objects.create(content_object=self.platypus, tag='prefetch_tag_1')
+ TaggedItem.objects.create(
+ content_object=Vegetable.objects.create(name='Broccoli'),
+ tag='prefetch_tag_2',
+ )
+ TaggedItem.objects.create(
+ content_object=Animal.objects.create(common_name='Bear'),
+ tag='prefetch_tag_3',
+ )
+ qs = TaggedItem.objects.filter(
+ tag__startswith='prefetch_tag_',
+ ).prefetch_related('content_object', 'content_object__tags')
+ with self.assertNumQueries(4):
+ tags = list(qs)
+ for tag in tags:
+ self.assertSequenceEqual(tag.content_object.tags.all(), [tag])
+
class ProxyRelatedModelTest(TestCase):
def test_default_behavior(self):