添加list_filter时,如何在django modeladmin更改列表表中修复/设置列宽?

Pet*_*ley 6 python django django-admin django-admin-filters

我正在努力改进django项目中的admin.py,虽然我并没有完全了解该表如何在list_diplay中出现三个字段,但至少它只是获得一个默认对象列表跨越整个页面的列...

无论如何,我问的是为什么如果这样:

class FieldAdmin(admin.ModelAdmin):
    list_display = ('name', 'label', 'standard',  )
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

没有list_filter

当我添加list_filter时,如下所示:

class FieldAdmin(admin.ModelAdmin):
    list_display = ('name', 'label', 'standard',  )
    list_filter = ['standard',]
Run Code Online (Sandbox Code Playgroud)

它为什么会这样?

Imgur

有没有办法让列重新增长以填充宽度,就像添加过滤器之前一样?我一直在阅读文档和谷歌搜索,但它似乎没有内置?我正在研究的项目目前正在使用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;
}
Run Code Online (Sandbox Code Playgroud)

禁用宽度样式规范修复它,但我宁愿做django方式,如果有的话 - 我希望有一种方法可以自定义FieldAdmin类的过滤器视图?

kar*_*ikr 5

您可能需要参考:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-vs-replacing-an-admin-template

基本上,需要覆盖change_list.html.

你可以这样做:

templates/
  admin/
    app/
      change_list.html
Run Code Online (Sandbox Code Playgroud)

您可以从中获取change_list.html的副本 django/contrib/admin/templates/admin/

并按照你想要的方式更新css.

  • 我意识到这在计划中并不是什么大不了的事,但对于这么一件小事来说似乎很极端(我显然不是在责备你,这只是令人失望;-)感谢您的回答! (2认同)

小智 5

管理员.py:

class MyClassAdmin(admin.ModelAdmin):

    class Media:
        css = {
            'all': ('fancy.css')
        }
Run Code Online (Sandbox Code Playgroud)

花式.css:

.column-foo {
    width: 20px;
}
Run Code Online (Sandbox Code Playgroud)

其中“foo”是字段名称。

来源: https: //docs.djangoproject.com/en/3.0/topics/forms/media/