我正在使用 ModelForm 并尝试在 Django forms.RadioSelect 小部件上设置一个 css 类,例如
class Meta:
model = models.MyModel
fields = ('rating',)
widgets = {
'rating': forms.RadioSelect(attrs={'class':'star'}),
}
但是 class='star' 不会在 html 中呈现。
我也尝试使用:
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
self.fields['rating'].widget.attrs['class'] = 'star'
这也不起作用。我用 forms.Textarea 小部件尝试了同样的事情,在那里我能够渲染 css 类。
我在这里做错了什么还是 RadioSelect 不支持 class 属性(我希望将类名应用于所有 radio 输入)?
最佳答案
复选框和单选小部件不继承自 Input
像其他小部件一样。
class 属性确实适用于 RadioSelect
,但它单独应用于每个 radio 输入。
例如,考虑以下形式:
from django import forms
class MyForm(forms.Form):
my_field = forms.ChoiceField(widget=forms.RadioSelect(attrs={'class': 'star'}), choices=(('x', 'x'), ('y', 'y'),))
它将在模板中输出以下 html:
<tr><th><label for="id_my_field_0">My field:</label></th>
<td>
<ul>
<li><label for="id_my_field_0"><input value="x" type="radio" class="star" name="my_field" id="id_my_field_0" /> x</label></li>
<li><label for="id_my_field_1"><input value="y" type="radio" class="star" name="my_field" id="id_my_field_1" /> y</label></li>
</ul>
</td>
</tr>
请注意,该类应用于每个
input
元素。
关于django - 将 css 类应用于 forms.RadioSelect 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14159577/