Ticket #16128: 16128.5.patch

File 16128.5.patch, 2.9 KB (added by adamnelson, 3 years ago)

Update to make previous patch merge

  • django/db/models/deletion.py

    diff --git a/django/db/models/deletion.py b/django/db/models/deletion.py
    index 9a6d499..5a5370f 100644
    a b class Collector(object): 
    201201            for model in models:
    202202                if model in sorted_models:
    203203                    continue
    204                 dependencies = self.dependencies.get(model)
     204                # Dependencies keys are not proxy models
     205                base_model = model._meta.proxy and model._meta.proxy_for_model or model
     206                dependencies = self.dependencies.get(base_model)
    205207                if not (dependencies and dependencies.difference(sorted_models)):
    206208                    sorted_models.append(model)
    207209                    found = True
  • tests/modeltests/proxy_models/models.py

    diff --git a/tests/modeltests/proxy_models/models.py b/tests/modeltests/proxy_models/models.py
    index c033117..7c0d899 100644
    a b they will take data directly from the table of their base class table rather 
    44than using a new table of their own. This allows them to act as simple proxies,
    55providing a modified interface to the data from the base class.
    66"""
     7from django.contrib.auth.models import User as AuthUser
    78from django.db import models
    89
    910# A couple of managers for testing managing overriding in proxy model cases.
    class Improvement(Issue): 
    158159
    159160class ProxyImprovement(Improvement):
    160161    class Meta:
    161         proxy = True
    162  No newline at end of file
     162        proxy = True
     163
     164
     165class AuthUserProxy(AuthUser):
     166    class Meta:
     167        proxy = True
     168
     169class Profile(models.Model):
     170    user = models.ForeignKey(AuthUser)
  • tests/modeltests/proxy_models/tests.py

    diff --git a/tests/modeltests/proxy_models/tests.py b/tests/modeltests/proxy_models/tests.py
    index 0a46a25..226369d 100644
    a b from models import MyPersonProxy, Abstract, OtherPerson, User, UserProxy 
    1111from models import UserProxyProxy, Country, State, StateProxy, TrackerUser
    1212from models import BaseUser, Bug, ProxyTrackerUser, Improvement, ProxyProxyBug
    1313from models import ProxyBug, ProxyImprovement
     14from models import AuthUser, AuthUserProxy, Profile
    1415
    1516class ProxyModelTests(TestCase):
    1617    def test_same_manager_queries(self):
    class ProxyModelTests(TestCase): 
    312313        management.call_command('loaddata', 'mypeople.json', verbosity=0, commit=False)
    313314        p = MyPerson.objects.get(pk=100)
    314315        self.assertEqual(p.name, 'Elvis Presley')
     316
     317    def test_delete_cascade_to_proxy_objects(self):
     318        """
     319        Test that delete() cascades to proxy objects. Regression for #16128.
     320        """
     321        proxy_joe = AuthUserProxy.objects.create()
     322        joe_s_profile = Profile.objects.create(user=proxy_joe)
     323        self.assertEqual(Profile.objects.count(), 1)
     324        proxy_joe.delete()
     325        self.assertEqual(Profile.objects.count(), 0)
Back to Top