我想在Django admin的列表显示中更改列宽。
是否有可能以某种方式向列中添加CSS类名? 我最好不要覆盖整个模板来完成这个。
答案 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选项完成。在这里,您可以为包装元素定义宽度或类。 但这只是有意义的,如果你想控制有限的字段集的宽度