【问题标题】:Django Admin form - How to override MultiSelectField class?Django 管理表单 - 如何覆盖 MultiSelectField 类?
【发布时间】:2015-06-15 18:01:06
【问题描述】:

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

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 复选框的类?

【问题讨论】:

    标签: django django-admin django-grappelli


    【解决方案1】:

    在要定义该表单的模型或表单类中添加 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。但不推荐。

    【讨论】:

      猜你喜欢
      • 2012-08-26
      • 1970-01-01
      • 2013-10-27
      • 2017-05-05
      • 1970-01-01
      • 2016-03-12
      • 2014-12-17
      • 1970-01-01
      • 2012-07-05
      相关资源
      最近更新 更多