我在 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
而不是类作为基础,因为页面上实际上有多个使用前缀的表单,我希望它是能够适用于所有这些。
最佳答案
根据documentation “小部件是 Django 对 HTML 输入元素的表示。” 这意味着小部件适用于输入标签,而不适用于其他标签,如 ul 或 li。
您可以使用 jquery 从输入标签中选择父选择器
$("ul:has(.checkbox-a)")
或
$("input.checkbox-a").closest("ul")
关于css - Django 表单 : set CSS class for list of choices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25271823/