似乎很少有人使用它,但是...我做到了。在这里您可以阅读:
删除了django.forms.widgets中一些未记录的类:SubWidget RendererMixin,ChoiceFieldRenderer,RadioFieldRenderer,CheckboxFieldRenderer ChoiceInput,RadioChoiceInput,CheckboxChoiceInput
我的源代码是:
from django.forms.widgets import ChoiceFieldRenderer, RadioChoiceInput, \
RendererMixin, Select
class BootstrapRadioFieldRenderer(ChoiceFieldRenderer):
outer_html = '<span {id_attr}>{content}</span>'
inner_html = '<div class="radio">{choice_value}{sub_widgets}</div>'
choice_input_class = RadioChoiceInput
class BootstrapRadioSelect(RendererMixin, Select):
renderer = BootstrapRadioFieldRenderer
_empty_value = ''
Run Code Online (Sandbox Code Playgroud)
我真的不知道如何将其转换为与1.11及更高版本兼容:他们说:
Use a custom widget template instead.
Run Code Online (Sandbox Code Playgroud)
好。怎么样?
我需要渲染没有UL的单选按钮组。在Django 1.9中,我使用了这个答案,并且在很多地方都使用了这个答案。我升级到Django的1.11,而且RadioFieldRenderer是不再支持。如何完成我现在在Django 1.11中所做的工作?
这就是我按照dirkgroten的答案在模板中完成的工作
{% with id=widget.attrs.id %}
{% for group, options, index in widget.optgroups %}
{% for option in options %}
{% include option.template_name with widget=option %}
{% endfor %}
{% endfor %}
{% endwith %}
Run Code Online (Sandbox Code Playgroud)