summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/contrib/admin/options.py2
-rw-r--r--tests/admin_views/tests.py15
2 files changed, 13 insertions, 4 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index cce92c6a95..567f7cf990 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -501,7 +501,7 @@ class ModelAdmin(BaseModelAdmin):
try:
object_id = model._meta.pk.to_python(object_id)
return queryset.get(pk=object_id)
- except (model.DoesNotExist, ValidationError):
+ except (model.DoesNotExist, ValidationError, ValueError):
return None
def get_changelist_form(self, request, **kwargs):
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index 0bcfc0c034..ff2eb95745 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -124,13 +124,22 @@ class AdminViewBasicTest(TestCase):
def testBasicEditGetStringPK(self):
"""
- A smoke test to ensure GET on the change_view works (returns an HTTP
- 404 error, see #11191) when passing a string as the PK argument for a
- model with an integer PK field.
+ Ensure GET on the change_view works (returns an HTTP 404 error, see
+ #11191) when passing a string as the PK argument for a model with an
+ integer PK field.
"""
response = self.client.get('/test_admin/%s/admin_views/section/abc/' % self.urlbit)
self.assertEqual(response.status_code, 404)
+ def testBasicInheritanceGetStringPK(self):
+ """
+ Ensure GET on the change_view works on inherited models (returns an
+ HTTP 404 error, see #19951) when passing a string as the PK argument
+ for a model with an integer PK field.
+ """
+ response = self.client.get('/test_admin/%s/admin_views/supervillain/abc/' % self.urlbit)
+ self.assertEqual(response.status_code, 404)
+
def testBasicAddPost(self):
"""
A smoke test to ensure POST on add_view works.