如何自定义 CheckboxSelectMultiple 小部件通过crispyforms 呈现的方式?

问题描述

我有一个 Django ModelForm,它使用 CheckBoxSelectMultiple 小部件呈现外键字段。我希望能够通过添加和/或删除一些 css 类来更改复选框的显示

在模板中,表单呈现如下:

<div id="id_activities" class="form-group">
    <label class="" for"">Choose Activities:</label>
    <div class="">
        <div class="custom-control custom-checkBox">
            <input id="id_activities_1" class="custom-control-input" type="checkBox" name="activities" value="1"/>
            <label class="custom-control-label" for="id_activities_1">..</label>
        </div>
    </div>
</div>

我希望能够使用一些非引导类自定义复选框的外观。我试过提供一个带有以下 html 的模板:

{% load crispy_forms_field %}

<div class="form-group">
    <label class="" for="">Choose Activities</label>
    <div>
        <div class="custom-control custom-checkBox addon">
            {% crispy_field field 'class' 'custom-control-input' %}
             <label class="custom-control-label small" for="{{ field.id_for_label }}">{{ field.label }}</label>
        </div>
    </div>
</div>

但这会导致输入被包裹在

    我目前正在尝试覆盖我自己的 scss 文件中的引导程序类,但对这种解决方法不满意,因为我想要更多的控制。有没有更好的方法自定义 CheckBoxSelectMultiple?我是否需要创建自定义布局对象?

    解决方法

    为了解决这个问题,我对 CheckboxSelectMultiple 小部件进行了子类化,并为 tempate_name 和 option_template_name 提供了我自己的模板。我很大程度上重用了 django 模板代码,但交换了 div 的列表元素

    相关问答

    Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
    Python-如何使用点“。” 访问字典成员?
    Java 字符串是不可变的。到底是什么意思?
    Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
    “loop:”在Java代码中。这是什么,为什么要编译?
    java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...