From 211486f3ab5602cdc332f03cd03fad3cb929d154 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Mon, 5 Oct 2015 13:26:14 -0400 Subject: Fixed #23076, #25505 -- Fixed deletion of intermediate proxy models. Thanks to James Murty for his work on an alternate patch. --- tests/proxy_model_inheritance/models.py | 7 ++++++- tests/proxy_model_inheritance/tests.py | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/proxy_model_inheritance/models.py b/tests/proxy_model_inheritance/models.py index 7a10b77c90..240fd60c4e 100644 --- a/tests/proxy_model_inheritance/models.py +++ b/tests/proxy_model_inheritance/models.py @@ -6,7 +6,12 @@ class ConcreteModel(models.Model): pass -class ConcreteModelSubclass(ConcreteModel): +class ProxyModel(ConcreteModel): + class Meta: + proxy = True + + +class ConcreteModelSubclass(ProxyModel): pass diff --git a/tests/proxy_model_inheritance/tests.py b/tests/proxy_model_inheritance/tests.py index b0af0040f9..b4b1c13435 100644 --- a/tests/proxy_model_inheritance/tests.py +++ b/tests/proxy_model_inheritance/tests.py @@ -9,6 +9,7 @@ from django.utils._os import upath from .models import ( ConcreteModel, ConcreteModelSubclass, ConcreteModelSubclassProxy, + ProxyModel, ) @@ -43,3 +44,10 @@ class MultiTableInheritanceProxyTest(TestCase): self.assertEqual(0, ConcreteModelSubclassProxy.objects.count()) self.assertEqual(0, ConcreteModelSubclass.objects.count()) self.assertEqual(0, ConcreteModel.objects.count()) + + def test_deletion_through_intermediate_proxy(self): + child = ConcreteModelSubclass.objects.create() + proxy = ProxyModel.objects.get(pk=child.pk) + proxy.delete() + self.assertFalse(ConcreteModel.objects.exists()) + self.assertFalse(ConcreteModelSubclass.objects.exists()) -- cgit v1.3