Index: modeltests/proxy_models/tests.py
===================================================================
--- modeltests/proxy_models/tests.py	(revision 16297)
+++ modeltests/proxy_models/tests.py	(working copy)
@@ -11,6 +11,7 @@
 from models import UserProxyProxy, Country, State, StateProxy, TrackerUser
 from models import BaseUser, Bug, ProxyTrackerUser, Improvement, ProxyProxyBug
 from models import ProxyBug, ProxyImprovement
+from models import AuthUser, AuthUserProxy, Profile, ProfileWithProxy
 
 class ProxyModelTests(TestCase):
     def test_same_manager_queries(self):
@@ -312,3 +313,20 @@
         management.call_command('loaddata', 'mypeople.json', verbosity=0, commit=False)
         p = MyPerson.objects.get(pk=100)
         self.assertEqual(p.name, 'Elvis Presley')
+
+    def test_delete_cascade_to_proxy_objects(self):
+        """
+        Test that delete() cascades to proxy objects. Regression for #16128.
+        """
+        # delete with a foreign key on a regular model
+        joe = AuthUser.objects.create()
+        joe_s_profile = Profile.objects.create(user=joe)
+        self.assertEqual(Profile.objects.count(), 1)
+        joe.delete()
+        self.assertEqual(Profile.objects.count(), 0)
+        # delete with a foreign key on a proxy model
+        joe = AuthUserProxy.objects.create()
+        joe_s_profile = ProfileWithProxy.objects.create(user=joe)
+        self.assertEqual(ProfileWithProxy.objects.count(), 1)
+        joe.delete()
+        self.assertEqual(ProfileWithProxy.objects.count(), 0)
Index: modeltests/proxy_models/models.py
===================================================================
--- modeltests/proxy_models/models.py	(revision 16297)
+++ modeltests/proxy_models/models.py	(working copy)
@@ -5,6 +5,7 @@
 providing a modified interface to the data from the base class.
 """
 
+from django.contrib.auth.models import User as AuthUser
 from django.contrib.contenttypes.models import ContentType
 from django.db import models
 
@@ -161,4 +162,15 @@
 
 class ProxyImprovement(Improvement):
     class Meta:
-        proxy = True
\ No newline at end of file
+        proxy = True
+
+
+class AuthUserProxy(AuthUser):
+    class Meta:
+        proxy = True
+
+class Profile(models.Model):
+    user = models.ForeignKey(AuthUser)
+
+class ProfileWithProxy(models.Model):
+    user = models.ForeignKey(AuthUserProxy)
