mirror of
https://github.com/django/django.git
synced 2024-12-22 09:05:43 +00:00
Fixed #35606, Refs #34045 -- Fixed rendering of ModelAdmin.action_checkbox for models with a __html__ method.
Thank you Claude Paroz for the report.
Regression in 85366fbca7
.
This commit is contained in:
parent
0e49a8c3bd
commit
182f262b15
1
AUTHORS
1
AUTHORS
@ -416,6 +416,7 @@ answer newbie questions, and generally made Django that much better:
|
||||
Himanshu Chauhan <hchauhan1404@outlook.com>
|
||||
hipertracker@gmail.com
|
||||
Hiroki Kiyohara <hirokiky@gmail.com>
|
||||
Hisham Mahmood <hishammahmood41@gmail.com>
|
||||
Honza Král <honza.kral@gmail.com>
|
||||
Horst Gutmann <zerok@zerokspot.com>
|
||||
Hugo Osvaldo Barrera <hugo@barrera.io>
|
||||
|
@ -1026,7 +1026,9 @@ class ModelAdmin(BaseModelAdmin):
|
||||
"""
|
||||
attrs = {
|
||||
"class": "action-select",
|
||||
"aria-label": format_html(_("Select this object for an action - {}"), obj),
|
||||
"aria-label": format_html(
|
||||
_("Select this object for an action - {}"), str(obj)
|
||||
),
|
||||
}
|
||||
checkbox = forms.CheckboxInput(attrs, lambda value: False)
|
||||
return checkbox.render(helpers.ACTION_CHECKBOX_NAME, str(obj.pk))
|
||||
|
@ -11,3 +11,7 @@ Bugfixes
|
||||
|
||||
* Added missing validation for ``UniqueConstraint(nulls_distinct=False)`` when
|
||||
using ``*expressions`` (:ticket:`35594`).
|
||||
|
||||
* Fixed a regression in Django 5.0 where ``ModelAdmin.action_checkbox`` could
|
||||
break the admin changelist HTML page when rendering a model instance with a
|
||||
``__html__`` method (:ticket:`35606`).
|
||||
|
@ -23,6 +23,12 @@ class GrandChild(models.Model):
|
||||
parent = models.ForeignKey(Child, models.SET_NULL, editable=False, null=True)
|
||||
name = models.CharField(max_length=30, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def __html__(self):
|
||||
return f'<h2 class="main">{self.name}</h2>'
|
||||
|
||||
|
||||
class Genre(models.Model):
|
||||
name = models.CharField(max_length=20)
|
||||
|
@ -364,6 +364,33 @@ class ChangeListTests(TestCase):
|
||||
table_output,
|
||||
)
|
||||
|
||||
def test_action_checkbox_for_model_with_dunder_html(self):
|
||||
grandchild = GrandChild.objects.create(name="name")
|
||||
request = self._mocked_authenticated_request("/grandchild/", self.superuser)
|
||||
m = GrandChildAdmin(GrandChild, custom_site)
|
||||
cl = m.get_changelist_instance(request)
|
||||
cl.formset = None
|
||||
template = Template(
|
||||
"{% load admin_list %}{% spaceless %}{% result_list cl %}{% endspaceless %}"
|
||||
)
|
||||
context = Context({"cl": cl, "opts": GrandChild._meta})
|
||||
table_output = template.render(context)
|
||||
link = reverse(
|
||||
"admin:admin_changelist_grandchild_change", args=(grandchild.id,)
|
||||
)
|
||||
row_html = build_tbody_html(
|
||||
grandchild,
|
||||
link,
|
||||
"name",
|
||||
'<td class="field-parent__name">-</td>'
|
||||
'<td class="field-parent__parent__name">-</td>',
|
||||
)
|
||||
self.assertNotEqual(
|
||||
table_output.find(row_html),
|
||||
-1,
|
||||
"Failed to find expected row element: %s" % table_output,
|
||||
)
|
||||
|
||||
def test_result_list_editable_html(self):
|
||||
"""
|
||||
Regression tests for #11791: Inclusion tag result_list generates a
|
||||
|
Loading…
Reference in New Issue
Block a user