Django 管理表单 - 如何覆盖 MultiSelectField class?
Django Admin form - How to override MultiSelectField class?
我正在努力解决在管理站点中同时使用 Django Grappelli 和 Django Multiselectfield 的渲染问题。复选框标签未对齐:
Grappelli 定义了两个 CSS classes:
.aligned label {
display: block; float: left;
padding: 0 10px 6px 0;
width: 120px;
}
.aligned .vCheckboxLabel {
display: inline; float: none; clear: both;
margin: 0 0 0 10px; padding: 0;
}
如果我在浏览器控制台中将复选框 class 更改为“.vCheckboxLabel”,标签会正确对齐并且没有问题。但是,我一辈子都找不到如何在管理模板中设置 class 的方法。
在 Django 管理模板中使用 {% if field.is_checkbox %}
不起作用,因为它是一个多选字段,而是在 {{ field.field }}
.
中呈现为复选框列表
如何在模板或其他地方为 MultiSelectField 复选框指定或覆盖 class?
在定义表单的模型或表单中添加 vCheckboxLabel class。
如果您使用 Form class 定义表单,则使用:
myfield = forms.BooleanField(widget=forms.CheckboxInput(attrs={'class':'vCheckboxLabel'}))
如果您使用的是模型,则将小部件添加到列中。 https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/#specifying-widgets-to-use-in-the-form-with-widgets
备用:
为简单起见,您可以在该页面上使用 java 脚本。 Select 复选框 class 并将其更改为 vCheckboxLabel。但是不推荐。
我正在努力解决在管理站点中同时使用 Django Grappelli 和 Django Multiselectfield 的渲染问题。复选框标签未对齐:
Grappelli 定义了两个 CSS classes:
.aligned label {
display: block; float: left;
padding: 0 10px 6px 0;
width: 120px;
}
.aligned .vCheckboxLabel {
display: inline; float: none; clear: both;
margin: 0 0 0 10px; padding: 0;
}
如果我在浏览器控制台中将复选框 class 更改为“.vCheckboxLabel”,标签会正确对齐并且没有问题。但是,我一辈子都找不到如何在管理模板中设置 class 的方法。
在 Django 管理模板中使用 {% if field.is_checkbox %}
不起作用,因为它是一个多选字段,而是在 {{ field.field }}
.
如何在模板或其他地方为 MultiSelectField 复选框指定或覆盖 class?
在定义表单的模型或表单中添加 vCheckboxLabel class。 如果您使用 Form class 定义表单,则使用:
myfield = forms.BooleanField(widget=forms.CheckboxInput(attrs={'class':'vCheckboxLabel'}))
如果您使用的是模型,则将小部件添加到列中。 https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/#specifying-widgets-to-use-in-the-form-with-widgets
备用: 为简单起见,您可以在该页面上使用 java 脚本。 Select 复选框 class 并将其更改为 vCheckboxLabel。但是不推荐。