在Django 1.11中渲染没有UL的单选按钮

use*_*706 4 django

我需要渲染没有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)

dir*_*ten 6

在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)