mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Thanks to James Murty for his work on an alternate patch.
This commit is contained in:
		| @@ -55,7 +55,7 @@ def get_candidate_relations_to_delete(opts): | ||||
|     # The candidate relations are the ones that come from N-1 and 1-1 relations. | ||||
|     # N-N  (i.e., many-to-many) relations aren't candidates for deletion. | ||||
|     return ( | ||||
|         f for f in opts.get_fields(include_hidden=True) | ||||
|         f for f in opts.concrete_model._meta.get_fields(include_hidden=True) | ||||
|         if f.auto_created and not f.concrete and (f.one_to_one or f.one_to_many) | ||||
|     ) | ||||
|  | ||||
|   | ||||
| @@ -6,7 +6,12 @@ class ConcreteModel(models.Model): | ||||
|     pass | ||||
|  | ||||
|  | ||||
| class ConcreteModelSubclass(ConcreteModel): | ||||
| class ProxyModel(ConcreteModel): | ||||
|     class Meta: | ||||
|         proxy = True | ||||
|  | ||||
|  | ||||
| class ConcreteModelSubclass(ProxyModel): | ||||
|     pass | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -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()) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user