css - Django 表单 : set CSS class for list of choices

标签 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 而不是类作为基础,因为页面上实际上有多个使用前缀的表单,我希望它是能够适用于所有这些。

最佳答案

根据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/

相关文章:

javascript - 使用 jQuery 打开关闭按钮

html - 如何在CSS中给出两种不同的状态?

html - 向背景图像添加左边距或右边距

python - 使用空字段和空白字段创建 Django 表单

python - Django:使用 Django 表单创建 HTML 输入数组

python - Django 表格 : disable field if booleanfield is checked

html - CSS 网格预水平滚动

python - 如果下拉列表为空而不显示,我如何从前端检查?

python - 如何在 Django 请求处理程序线程中对 SIGTERM 执行代码

python - 在表单中创建新的外键