#36250: `admin.widgets.RelatedFieldWidgetWrapper.get_context()` bypasses the used
renderer
----------------------------+-----------------------------------------
Reporter: Jacob Rief | Type: Bug
Status: new | Component: contrib.admin
Version: 5.2 | Severity: Normal
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
----------------------------+-----------------------------------------
In django.contrib.admin, `ForeignKey` and `ManyToManyField` are mapped to
a `admin.widgets.RelatedFieldWidgetWrapper`. This wrapper widget then
renders the underling widget using:
{{{
def get_context(self, name, value, attrs):
...
context = {
"rendered_widget": self.widget.render(name, value, attrs),
...
}
...
}}}
If the `RelatedFieldWidgetWrapper` itself has been rendered using an
alternative renderer, the underling widgets will be rendered using the
default renderer instead of the alternative renderer as used to render the
said wrapper widget. This may lead to unexpected output.
Possible solution:
By adding the optional argument `renderer` to the `get_context()`-method,
the widget rendering function could be rewritten as
`self.widget.render(name, value, attrs, renderer=renderer)`.
This issue might be related to #34257.
--
Ticket URL: <
https://code.djangoproject.com/ticket/36250>
Django <
https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.