【问题标题】:How to fix/set column width in a django modeladmin change list table when a list_filter is added?添加 list_filter 时,如何在 django modeladmin 更改列表中修复/设置列宽?
【发布时间】: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 类自定义过滤器视图?

【问题讨论】:

    标签: python django django-admin django-admin-filters


    【解决方案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。

      【讨论】:

      • 我意识到这在计划中并不是什么大不了的事,但对于这么小的事情来说似乎很极端(我显然不是在责怪你,这只是令人失望 ;-) 感谢您的回答!
      猜你喜欢
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      • 2018-03-28
      相关资源
      最近更新 更多