如何在Django admin change_list中为一个CSS类提供一个列

时间:2011-04-21 10:00:29

标签: django django-admin

我想在Django admin的列表显示中更改列宽。

是否有可能以某种方式向列中添加CSS类名? 我最好不要覆盖整个模板来完成这个。

3 个答案:

答案 0 :(得分:6)

在Django> = 1.6中,list_display输出中包含CSS类:

list_display中的字段名称也将在HTML输出中显示为CSS类,每个column-<field_name>元素上的<th>形式。这可用于在CSS文件中设置列宽。

答案 1 :(得分:3)

虽然这个功能在第1.6节中实现,正如StvnW所说,对于早期版本,您可以执行以下操作:

在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个孩子。

答案 2 :(得分:2)

有一个open ticket解决了在change_list视图中为表列指定css类的需要。

那说...在故障单的描述中有一个片段,在你的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 %}

所以你不要覆盖整个模板,只覆盖你需要的部分(extrastyle)。

现在您可以注入自己的样式表,例如使用:nth-child-selector

设置列的样式

另一种选择是将您的特定字段包装在html中,这可以使用list_display选项完成。在这里,您可以为包装元素定义宽度或类。 但这只是有意义的,如果你想控制有限的字段集的宽度