我需要渲染没有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)
在Django 1.11中,定义小部件的方式发生了很大变化。但这使定制变得更加容易。该RadioSelect小部件使用的multiple_input.html模板。删除的最佳选择<ul>是执行以下操作:
子类RadioSelect以使用您自己的模板:
class MyRadioSelect(RadioSelect):
template_name = 'my_widgets/radio.html'
Run Code Online (Sandbox Code Playgroud)将multiple_input.html(这是标准的django模板)代码复制到您自己的模板(“ my_widgets / radio.html ”)中,并根据需要调整所有内容。您可以使用<div>s代替<ul>and <li>或任何您想要的东西。
在您的表单中,使用您自己的小部件:
options = ChoiceField(widget=MyRadioSelect)
Run Code Online (Sandbox Code Playgroud)