我想通过从contrib/admin/static/admin/css/base.css
减少min-height属性来覆盖select-multiple小部件的css定义。但是,我认为我的css没有加载。我使用自定义管理表单并在此表单中以及相应的ModelAdmin中定义了Media子类:
class Media:
css = {
'all': ('/css/admin widgets.css',)
}
文件本身位于myapp/static/css/admin widgets.css
并包含:
select[multiple] {
min-height: 65px;
}
在settings.py
中,我已经定义了
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATICFILES_DIRS = [os.path.join(BASE_DIR, "myapp", "static")]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static'
我已经运行了manage.py collectstatic
,它收集了项目的static-subdir中的所有管理文件和我自己的css文件。我还按照here描述扩展了urls.py
,但仍然使用150px min-height渲染小部件,这是在base.css中定义的。任何帮助表示赞赏。
编辑:我实际上在django.contrib.admin.TabularInline
内使用该表单。我还尝试将Media-subclass添加到此内联中 - 无济于事。
答案 0 :(得分:0)
我自己找到了解决方案。它实际上只有一个字符,但不是Jonas指向我的文件名中的空格(我在Windows文件系统上,也许在linux上有所不同)。相反,它是Media类中URL的前导斜杠。而不是:
class Media:
css = {
'all': ('/css/admin widgets.css',)
}
必须是
class Media:
css = {
'all': ('css/admin widgets.css',)
}
或者Django直接查看项目的css/admin widgets.css
根目录,而不是静态子目录static/css/admin.widgets.css
。
此外,如果Media子类直接驻留在Admin,Inline或Form中,似乎无关紧要。它无论如何都适用。
还有一个提示:在使用css或js进行测试之前,始终清除浏览器缓存。我已经多少次陷入同一个坑? -.-
编辑:已有answer描述如何覆盖管理员。从Django 2.0
开始,但仍然正确