添加 list_filter 时,如何在 django modeladmin 更改列表中修复/设置列宽?
Posted
技术标签:
【中文标题】添加 list_filter 时,如何在 django modeladmin 更改列表中修复/设置列宽?【英文标题】:How to fix/set column width in a django modeladmin change list table when a list_filter is added? 【发布时间】:2012-08-31 20:18:47 【问题描述】:我正在努力改进一个 django 项目中的 admin.py,虽然我并不完全对 list_diplay 中包含三个字段的表的输出方式感到兴奋,但至少它比只获得一个默认对象要好一列跨越整个页面的列表...
无论如何,我要问的是为什么:
class FieldAdmin(admin.ModelAdmin):
list_display = ('name', 'label', 'standard', )
看起来像这样:
当我添加一个 list_filter 时,像这样:
class FieldAdmin(admin.ModelAdmin):
list_display = ('name', 'label', 'standard', )
list_filter = ['standard',]
为什么会这样?
有没有办法让列重新增长以填充宽度,就像添加过滤器之前一样?我一直在阅读文档和谷歌搜索,但它似乎没有内置?我正在做的项目目前使用的是django 1,2,3,final。
FWIW,导致这种情况的 css 在这里:
.change-list .filtered table, .change-list .filtered .paginator,
.filtered #toolbar, .filtered div.xfull
margin-right: 160px !important;
width: auto !important;
禁用宽度样式规范可以修复它,但如果有的话,我宁愿用 django 方式做事 - 我希望也许有一种方法可以从 FieldAdmin 类自定义过滤器视图?
【问题讨论】:
【参考方案1】:admin.py:
class MyClassAdmin(admin.ModelAdmin):
class Media:
css =
'all': ('fancy.css')
fancy.css:
.column-foo
width: 20px;
其中“foo”是一个字段名。
来源:https://docs.djangoproject.com/en/3.0/topics/forms/media/
【讨论】:
【参考方案2】:你可能想参考这个:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-vs-replacing-an-admin-template
基本上,change_list.html 需要被覆盖。
你可以这样做:
templates/
admin/
app/
change_list.html
您可以从django/contrib/admin/templates/admin/
获取change_list.html的副本
并按照您想要的方式更新 css。
【讨论】:
我意识到这在计划中并不是什么大不了的事,但对于这么小的事情来说似乎很极端(我显然不是在责怪你,这只是令人失望 ;-) 感谢您的回答!以上是关于添加 list_filter 时,如何在 django modeladmin 更改列表中修复/设置列宽?的主要内容,如果未能解决你的问题,请参考以下文章
django admin list_filter "or" 条件