diff --git a/tests/admin_changelist/admin.py b/tests/admin_changelist/admin.py
index 34e84a06b6..97833fa86b 100644
--- a/tests/admin_changelist/admin.py
+++ b/tests/admin_changelist/admin.py
@@ -3,7 +3,7 @@ from django.contrib.auth.admin import UserAdmin
 from django.contrib.auth.models import User
 from django.core.paginator import Paginator
 
-from .models import Band, Child, Event, Parent, Swallow
+from .models import Band, Child, Event, Parent, SoftDeletable, Swallow
 
 site = admin.AdminSite(name="admin")
 
@@ -176,3 +176,15 @@ class EmptyValueChildAdmin(admin.ModelAdmin):
     @admin.display(empty_value='&dagger;')
     def age_display(self, obj):
         return obj.age
+
+
+class SoftDeletableAdmin(admin.ModelAdmin):
+    list_display = ["name", "deleted"]
+    list_editable = ["deleted"]
+    ordering = ["name"]
+
+    def get_queryset(self, request):
+        return self.model.include_deleted.all()
+
+
+site.register(SoftDeletable, SoftDeletableAdmin)
diff --git a/tests/admin_changelist/models.py b/tests/admin_changelist/models.py
index 81d7fdfb3a..0e6387d0a1 100644
--- a/tests/admin_changelist/models.py
+++ b/tests/admin_changelist/models.py
@@ -119,3 +119,16 @@ class CustomIdUser(models.Model):
 
 class CharPK(models.Model):
     char_pk = models.CharField(max_length=100, primary_key=True)
+
+
+class SoftDeletableManager(models.Manager):
+    def get_queryset(self):
+        return super().get_queryset().filter(deleted=False)
+
+
+class SoftDeletable(models.Model):
+    name = models.CharField(max_length=20)
+    deleted = models.BooleanField(default=False)
+
+    objects = SoftDeletableManager()
+    include_deleted = models.Manager()
diff --git a/tests/admin_changelist/tests.py b/tests/admin_changelist/tests.py
index 08fe636128..3928d19214 100644
--- a/tests/admin_changelist/tests.py
+++ b/tests/admin_changelist/tests.py
@@ -36,7 +36,7 @@ from .admin import (
 from .models import (
     Band, CharPK, Child, ChordsBand, ChordsMusician, Concert, CustomIdUser,
     Event, Genre, Group, Invitation, Membership, Musician, OrderedObject,
-    Parent, Quartet, Swallow, SwallowOneToOne, UnorderedObject,
+    Parent, Quartet, SoftDeletable, Swallow, SwallowOneToOne, UnorderedObject,
 )
 
 
@@ -272,6 +272,31 @@ class ChangeListTests(TestCase):
         with self.assertRaises(IncorrectLookupParameters):
             m.get_changelist_instance(request)
 
+    def test_list_editable_edit_objects_excluded_by_default_manager(self):
+        deleted = SoftDeletable.objects.create(name='1-deleted', deleted=True)
+        active = SoftDeletable.objects.create(name='2-active')
+        self.client.force_login(self.superuser)
+        changelist_url = reverse('admin:admin_changelist_softdeletable_changelist')
+        data = {
+            "form-INITIAL_FORMS": 2,
+            "form-TOTAL_FORMS": 2,
+            "form-0-id": deleted.pk,
+            # Restore the soft-deleted row.
+            "form-0-deleted": False,
+            "form-1-id": active.pk,
+            "form-1-deleted": False,
+            "_save": True,
+        }
+        response = self.client.post(changelist_url, data)
+        self.assertEqual(response.status_code, 302)
+        self.assertQuerysetEqual(
+            SoftDeletable.include_deleted.values_list("pk", "name", "deleted").order_by("name"),
+            [
+                (deleted.pk, "1-deleted", False),
+                (active.pk, "2-active", False),
+            ],
+        )
+
     def test_custom_paginator(self):
         new_parent = Parent.objects.create(name='parent')
         for i in range(1, 201):
