Django Admin表单 - 如何覆盖MultiSelectField类?

时间:2015-06-15 18:01:06

标签: django django-admin django-grappelli

我在管理站点中一起使用Django Grappelli和Django Multiselectfield来解决渲染问题。复选框标签未对齐:

issue

Grappelli定义了两个CSS类:

.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;
}

如果我将复选框类更改为" .vCheckboxLabel"在浏览器控制台中,标签正确对齐,没有问题。但是,我不能为我的生活找到如何在管理模板中设置类。

在Django管理模板中使用{% if field.is_checkbox %}并不起作用,因为它是一个多选字段,而是呈现为{{ field.field }}中的复选框列表。

如何在模板或其他地方指定或覆盖MultiSelectField复选框的类?

1 个答案:

答案 0 :(得分:1)

在要定义该表单的Model或Form类中添加vCheckboxLabel。 如果您使用Form类定义表单,请使用:

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脚本。选择复选框类并将其更改为vCheckboxLabel。但不建议这样做。