Django表单:为选项列表设置CSS类

时间:2014-08-12 18:45:18

标签: css django django-forms

我在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而不是类,因为页面上实际上有多个表单使用前缀,我希望它能够应用对所有人来说。

1 个答案:

答案 0 :(得分:0)

根据documentation“小部件是Django对HTML输入元素的表示。” 这意味着小部件用于输入标签,而不是其他标签,如ul或li。

您可以使用jquery

从输入标记中选择父选择器
 $("ul:has(.checkbox-a)")

 $("input.checkbox-a").closest("ul")