#33445: subwidget don't rendered correctly in Miltiwidget, if subwidget have own
render method.
-------------------------------------+-------------------------------------
Reporter: Maxim | Owner: nobody
Danilov |
Type: Bug | Status: new
Component: Forms | Version: 4.0
Severity: Normal | Keywords: Forms, multiwidget,
Triage Stage: | subwidget render.
Unreviewed | Has patch: 1
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 1
UI/UX: 0 |
-------------------------------------+-------------------------------------
Subwidget don't rendered correctly in Miltiwidget, if Subwidget have own
render method.
How i found it: In Multiwidget I use CKEditorWidget(forms.Textarea), whose
have own render.
How to reproduce error:
Put MyWidget like a subwidget in multiwidget.
{{{
Class MyWidget(TextInput):
def render(self, *args, **kwargs):
print('hello world')
return super().render(*args, **kwargs)
}}}
Nobody can see "Hello world" after Multiwidget render.
How i patch it - add subwidget.render call in context.
{{{
# in Multiwidget:
def get_context(self, name, value, attrs):
...
context['widget']['subwidgets'] = (self.rednder_subwidget(subwidget,
**subwidget_context) for subwidget, subwidget_context in zip(self.widgets,
context['widget']['subwidgets']))
...
# add
@staticmethod
def rednder_subwidget(subwidget, **kwargs):
kwargs['render'] = lambda:
mark_safe(subwidget.render(kwargs['name'], kwargs['value'],
attrs=kwargs['attrs'], renderer=kwargs.get('renderer')))
return kwargs
in multiwitget template:
{% spaceless %}{% for widget in widget.subwidgets %}{{widget.render}}{%
endfor %}{% endspaceless %}
}}}
Other possibility - write in documentation: MultiWidget works only with
native Built-in Django widgets.
--
Ticket URL: <https://code.djangoproject.com/ticket/33445>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/052.5b7b52cfe194fcad645558908d2df2a6%40djangoproject.com.