From f57a90073920f1c34096d062e151a7bd79065f01 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Sun, 24 May 2026 14:11:37 -0400 Subject: [PATCH] Removed integer pk assumption in AdminCustomQuerysetTest. --- tests/admin_views/admin.py | 8 +++---- tests/admin_views/models.py | 4 +++- tests/admin_views/tests.py | 44 +++++++++++++++++++++---------------- 3 files changed, 32 insertions(+), 24 deletions(-) diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py index a0ecd99c25a7..fe73c049438c 100644 --- a/tests/admin_views/admin.py +++ b/tests/admin_views/admin.py @@ -61,7 +61,6 @@ CyclicTwo, DependentChild, DooHickey, - EmptyModel, EmptyModelHidden, EmptyModelMixin, EmptyModelVisible, @@ -77,6 +76,7 @@ Gadget, Gallery, GenRelReference, + GetQuerySetModel, Grommet, ImplicitlyGeneratedPK, Ingredient, @@ -542,9 +542,9 @@ def save_related(self, request, form, formsets, change): child.save() -class EmptyModelAdmin(admin.ModelAdmin): +class GetQuerySetModelAdmin(admin.ModelAdmin): def get_queryset(self, request): - return super().get_queryset(request).filter(pk__gt=1) + return super().get_queryset(request).filter(deleted=False) class OldSubscriberAdmin(admin.ModelAdmin): @@ -1333,7 +1333,7 @@ def test_action(self, request, selected): site.register(Podcast, PodcastAdmin) site.register(Vodcast, VodcastAdmin) site.register(Parent, ParentAdmin) -site.register(EmptyModel, EmptyModelAdmin) +site.register(GetQuerySetModel, GetQuerySetModelAdmin) site.register(Fabric, FabricAdmin) site.register(Gallery, GalleryAdmin) site.register(Picture, PictureAdmin) diff --git a/tests/admin_views/models.py b/tests/admin_views/models.py index 995391cb392b..13f092d0b4d3 100644 --- a/tests/admin_views/models.py +++ b/tests/admin_views/models.py @@ -390,7 +390,9 @@ class Toy(models.Model): child = models.ForeignKey(PKChild, models.CASCADE) -class EmptyModel(models.Model): +class GetQuerySetModel(models.Model): + deleted = models.BooleanField(default=False) + def __str__(self): return "Primary key = %s" % self.id diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index af6bf07e98e8..b6c4e88a43ef 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -80,7 +80,6 @@ CyclicTwo, DooHickey, Employee, - EmptyModel, Fabric, FancyDoodad, FieldOverridePost, @@ -89,6 +88,7 @@ FoodDelivery, FunkyTag, Gallery, + GetQuerySetModel, Grommet, Inquisition, Language, @@ -5454,7 +5454,8 @@ def setUpTestData(cls): cls.superuser = User.objects.create_superuser( username="super", password="secret", email="super@example.com" ) - cls.pks = [EmptyModel.objects.create().id for i in range(3)] + cls.obj = GetQuerySetModel.objects.create() + cls.deleted_obj = GetQuerySetModel.objects.create(deleted=True) def setUp(self): self.client.force_login(self.superuser) @@ -5465,12 +5466,11 @@ def setUp(self): } def test_changelist_view(self): - response = self.client.get(reverse("admin:admin_views_emptymodel_changelist")) - for i in self.pks: - if i > 1: - self.assertContains(response, "Primary key = %s" % i) - else: - self.assertNotContains(response, "Primary key = %s" % i) + # The changelist filters objects using ModelAdmin.get_queryset(). + url = reverse("admin:admin_views_getquerysetmodel_changelist") + response = self.client.get(url) + self.assertContains(response, str(self.obj)) + self.assertNotContains(response, str(self.deleted_obj)) def test_changelist_view_count_queries(self): # create 2 Person objects @@ -5501,17 +5501,23 @@ def test_changelist_view_count_queries(self): self.assertEqual(resp.context["selection_note_all"], "1 selected") def test_change_view(self): - for i in self.pks: - url = reverse("admin:admin_views_emptymodel_change", args=(i,)) - response = self.client.get(url, follow=True) - if i > 1: - self.assertEqual(response.status_code, 200) - else: - self.assertRedirects(response, reverse("admin:index")) - self.assertEqual( - [m.message for m in response.context["messages"]], - ["empty model with ID “1” doesn’t exist. Perhaps it was deleted?"], - ) + # The change view filters objects using ModelAdmin.get_queryset(). + url = reverse("admin:admin_views_getquerysetmodel_change", args=(self.obj.pk,)) + response = self.client.get(url, follow=True) + self.assertEqual(response.status_code, 200) + # The deleted object isn't accessible. + url = reverse( + "admin:admin_views_getquerysetmodel_change", args=(self.deleted_obj.pk,) + ) + response = self.client.get(url, follow=True) + self.assertRedirects(response, reverse("admin:index")) + self.assertEqual( + [m.message for m in response.context["messages"]], + [ + f"get query set model with ID “{self.deleted_obj.pk}” doesn’t " + "exist. Perhaps it was deleted?" + ], + ) def test_add_model_modeladmin_defer_qs(self): # Test for #14529. defer() is used in ModelAdmin.get_queryset()