如果我使用下面的来生成多个单选按钮:
from django import forms
class MCQCollectionForm(forms.Form):
user_input = forms.ChoiceField(
widget=forms.RadioSelect, label='', choices=enumerate(['option 1', 'option 2'])
)
我得到:
<div id="id_user_input">
<div>
<label for="id_user_input_0"><input id="id_user_input_0" name="user_input" required="" type="radio"
value="0">
option 1</label>
</div>
<div>
<label for="id_user_input_1"><input id="id_user_input_1" name="user_input" required="" type="radio"
value="1">
option 2</label>
</div>
</div>
但我只希望它是下面的,没有别的:
<label class="user-item">
<input name="user_input" type="radio" ... >
<span>Lorem ipsum dolor</span>
</label>
<label class="user-item">
<input name="user_input" type="radio" ... >
<span>Lorem ipsum dolor</span>
</label>
有没有一种简单的方法,不用使用JS,手动进行所需的更改?注意:额外的属性id=...
,required
,...都很好,我只是希望div消失,并能够设置标签的类user-item
和span
与其内容.
1条答案
按热度按时间dsekswqp1#
您可以通过使用从
forms.RadioSelect
继承的自定义小部件并覆盖方法create_option
来实现这一点在您的forms.py文件中添加此自定义小部件类。
现在,使用以下内容更新
MCQCollectionForm
类:从
views.py
文件中,通过适当的视图上下文传递表单,如下所示:form = MCQCollectionForm() render(.....,{'form':form})
(我相信你已经有了这个地方)从您的模板文件循环通过表单字段,如下所示:
这将帮助你实现你的目标。下面是一个屏幕截图,它将如何在HTML源代码格式。