我在Django中有一个模型表单,其中一个字段answer
由复选框表示。我希望能够通过CSS类识别选择列表。目前,我已修改了表单的__init__
方法,并为窗口小部件设置了class
属性。
class CheckboxForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CheckboxForm, self).__init__(*args, **kwargs)
self.fields['answer'] = forms.ModelMultipleChoiceField(
widget=forms.CheckboxSelectMultiple(attrs={
'class': 'checkbox-a',
}),
)
# ...
但是,这会为每个单独的复选框输入设置类,如下所示:
<ul id="id_answer">
<li><label for="id_answer_0">
<input class="checkbox-a" type="checkbox">
</label></li>
<li><label for="id_answer_1">
<input class="checkbox-a" type="checkbox">
</label></li>
</ul>
相反,我想将类设置为ul
输入,如下所示:
<ul id="id_answer" class="checkbox-a">
<li><label for="id_answer_0">
<input type="checkbox">
</label></li>
<li><label for="id_answer_1">
<input type="checkbox">
</label></li>
</ul>
有没有办法做到这一点?我愿意使用jQuery / JavaScript,虽然有一些方法将它放在表单/模型中是理想的。
注意:我不能仅仅使用id_answer
而不是类,因为页面上实际上有多个表单使用前缀,我希望它能够应用对所有人来说。
答案 0 :(得分:0)
根据documentation“小部件是Django对HTML输入元素的表示。” 这意味着小部件用于输入标签,而不是其他标签,如ul或li。
您可以使用jquery
从输入标记中选择父选择器 $("ul:has(.checkbox-a)")
或
$("input.checkbox-a").closest("ul")