diff --git a/tests/modeltests/generic_relations/models.py b/tests/modeltests/generic_relations/models.py index 2f025e660b4..18d76239713 100644 --- a/tests/modeltests/generic_relations/models.py +++ b/tests/modeltests/generic_relations/models.py @@ -94,3 +94,7 @@ class GeckoManager(models.Manager): class Gecko(models.Model): has_tail = models.BooleanField() objects = GeckoManager() + +# To test fix for #11263 +class Rock(Mineral): + tags = generic.GenericRelation(TaggedItem) diff --git a/tests/modeltests/generic_relations/tests.py b/tests/modeltests/generic_relations/tests.py index 73b0a483a2b..27b25185eac 100644 --- a/tests/modeltests/generic_relations/tests.py +++ b/tests/modeltests/generic_relations/tests.py @@ -6,7 +6,7 @@ from django.contrib.contenttypes.models import ContentType from django.test import TestCase from .models import (TaggedItem, ValuableTaggedItem, Comparison, Animal, - Vegetable, Mineral, Gecko) + Vegetable, Mineral, Gecko, Rock) class GenericRelationsTests(TestCase): @@ -231,6 +231,16 @@ class GenericRelationsTests(TestCase): tag = TaggedItem.objects.create(content_object=tailless, tag="lizard") self.assertEqual(tag.content_object, tailless) + def test_subclasses_with_gen_rel(self): + """ + Test that concrete model subclasses with generic relations work + correctly (ticket 11263). + """ + granite = Rock.objects.create(name='granite', hardness=5) + TaggedItem.objects.create(content_object=granite, tag="countertop") + self.assertEqual(Rock.objects.filter(tags__tag="countertop").count(), 1) + + class CustomWidget(forms.TextInput): pass