【发布时间】:2011-08-10 04:38:06
【问题描述】:
我想更改 Django 管理员列表显示中的列宽。
是否有可能以某种方式将 CSS 类名添加到列中? 我最好不要覆盖整个模板来完成此操作。
【问题讨论】:
标签: django django-admin
我想更改 Django 管理员列表显示中的列宽。
是否有可能以某种方式将 CSS 类名添加到列中? 我最好不要覆盖整个模板来完成此操作。
【问题讨论】:
标签: django django-admin
虽然正如 StvnW 所说,此功能在 vers1.6 中实现,但对于早期版本,您可以执行以下操作:
在 admin.py 中:
class MyModelAdmin(admin.ModelAdmin):
# your code here
# specify a stylesheet just for the list view
class Media:
css = {'all': ('css/mymodel_list.css')}
在 mymodel_list.css 中:
/* replace '5' with the column desired */
table#result_list td:nth-child(5) {
width: 15em;
}
指定table#result_list 只会将此样式表应用于列表视图,不会影响此模型的正常管理页面。另外请注意,虽然 django 使用 th 作为模型的第一列,但它仍然算作 td 子级。
【讨论】:
css = {'all': ('css/mymodel_list.css')} 应该添加一个逗号:css = {'all': ('css/mymodel_list.css', )} 成为一个元组。
在 Django >= 1.6 中,CSS 类包含在 list_display 输出中:
"list_display 中的字段名称也将作为 CSS 类出现在 HTML 输出中,在每个 <th> 元素上以 column-<field_name> 的形式出现。这可用于设置 CSS 中的列宽文件。"
【讨论】:
admin.py 中的类包含list_display = ('foo',),Django 管理员输出<th class="column-foo">。您可以在 CSS 中使用 .column-foo { width: ... ; }。
open ticket 解决了在 change_list 视图中为表列指定 css 类的需求。
也就是说……在工单的描述中,有一个 sn-p 在你的 change_list-template 中注入了一个自定义样式表:
{% extends "admin/change_list.html" %}
{% block extrastyle %}
{{ block.super }}
<link rel="stylesheet" type="text/css" href="/css/poll_admin_changelist.css" />
{% endblock extrastyle %}
所以你不会覆盖整个模板,只覆盖你需要的部分(额外样式)。
现在您可以注入自己的样式表,例如使用 :nth-child-selector 设置列的样式
另一个选项是将您的特定字段包装在 html 中,这可以使用 list_display 选项来完成。在这里,您可以为包装元素定义宽度或类。 但是,如果您想控制有限字段集的宽度,这才有意义
【讨论】: