在Django中更改表格单元格的整个背景颜色Admin
问题描述:
我想着色整个Django表格单元格,下面的代码只着色Django Admin中的文本而不是整个表格单元格中的文本。什么是目前的样子:在Django中更改表格单元格的整个背景颜色Admin
下面是当前的代码
class Student(models.Model):
def city_and_zip(self):
if self.city_zip:
cell_html = '<div style = "background-color:#e6f2ff;">%s</div>'
else:
cell_html = '<div>%s</div>'
return cell_html % self.city_zip
city_and_zip.allow_tags = True
再次,它colorizes得当......但只是在一定程度上。我想为整个单元着色。更改div到th也不起作用
答
当您为modelAdmin
声明list_display时,td
元素包含此字段具有类似field-'list_display_name'
的css类。我的情况是它会field-city_and_zip
。
所以你可以添加这个类的CSS选择器。 Django为这种方法提供了许多解决方案。这里是一个:
class StudentAdmin(admin.ModelAdmin):
@property
def media(self):
media = super(ProductAdmin, self).media
css = {
"all": (
"css/your.css",
)
}
media.add_css(css)
return media
在另一方面,你可以在你的管理模式写class Media
:
class StudentAdmin(admin.ModelAdmin):
class Media:
css = {"all":("css/your.css",)}
然后把这个css文件在静态路径和写选择:
.field-city_and_zip {
background-color: #e6f2ff;
}
它应该像你需要的那样工作。您也可以直接将CSS管理基本模板
more information about admin page
答
您可以通过两种方式更改管理员CSS资产:
-
型号级别:需要添加CSS文件到您的管理模式。
class MyModelAdmin(admin.ModelAdmin): class Media: js = ('js/admin/my_own_admin.js',) css = { 'all': ('css/admin/my_own_admin.css',) }
- 模板级别:如果你想改变一般的管理员,应该重写管理模板的外观。这在这里详述:Overriding admin templates。
有时您可以扩展原始管理文件,然后覆盖django/contrib/admin/templates/admin/base.html中的{% block extrastyle %}{% endblock %}
这样的块作为示例。