Skip to content

Commit 58c7ff3

Browse files
committed
Refs #13203, #9501 -- Added a test for generic relations to child models.
Fixed in 9777442.
1 parent ac09d22 commit 58c7ff3

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

tests/generic_relations/models.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,10 @@ class Rock(Mineral):
114114
tags = GenericRelation(TaggedItem)
115115

116116

117+
class ValuableRock(Mineral):
118+
tags = GenericRelation(ValuableTaggedItem)
119+
120+
117121
class ManualPK(models.Model):
118122
id = models.IntegerField(primary_key=True)
119123
tags = GenericRelation(TaggedItem, related_query_name='manualpk')

tests/generic_relations/tests.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
from .models import (
1313
AllowsNullGFK, Animal, Comparison, ConcreteRelatedModel,
1414
ForConcreteModelModel, ForProxyModelModel, Gecko, ManualPK, Mineral,
15-
ProxyRelatedModel, Rock, TaggedItem, ValuableTaggedItem, Vegetable,
15+
ProxyRelatedModel, Rock, TaggedItem, ValuableRock, ValuableTaggedItem,
16+
Vegetable,
1617
)
1718

1819

@@ -400,6 +401,13 @@ def test_gfk_subclasses(self):
400401
)
401402
self.assertEqual(valuedtag.content_object, quartz)
402403

404+
def test_generic_relation_to_inherited_child(self):
405+
# GenericRelations to models that use multi-table inheritance work.
406+
granite = ValuableRock.objects.create(name='granite', hardness=5)
407+
ValuableTaggedItem.objects.create(content_object=granite, tag="countertop", value=1)
408+
granite.delete() # deleting the rock should delete the related tag.
409+
self.assertEqual(ValuableTaggedItem.objects.count(), 0)
410+
403411
def test_generic_inline_formsets(self):
404412
GenericFormSet = generic_inlineformset_factory(TaggedItem, extra=1)
405413
formset = GenericFormSet()

0 commit comments

Comments
 (0)