Opened 4 hours ago
Last modified 3 hours ago
#36250 new Bug
admin.widgets.RelatedFieldWidgetWrapper.get_context() bypasses the used renderer
Reported by: | Jacob Rief | Owned by: | |
---|---|---|---|
Component: | contrib.admin | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Jacob Rief | Triage Stage: | Accepted |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
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.
Change History (1)
comment:1 by , 3 hours ago
Summary: | `admin.widgets.RelatedFieldWidgetWrapper.get_context()` bypasses the used renderer → admin.widgets.RelatedFieldWidgetWrapper.get_context() bypasses the used renderer |
---|---|
Triage Stage: | Unreviewed → Accepted |
Version: | 5.2 → dev |
Thank you for the report! This makes sense to me but might be a little fiddly to resolve