在Django中更改表格单元格的整个背景颜色Admin

问题描述:

我想着色整个Django表格单元格,下面的代码只着色Django Admin中的文本而不是整个表格单元格中的文本。什么是目前的样子:在Django中更改表格单元格的整个背景颜色Admin

enter image description here

下面是当前的代码

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资产:

  1. 型号级别:需要添加CSS文件到您的管理模式。

    class MyModelAdmin(admin.ModelAdmin): 
        class Media: 
         js = ('js/admin/my_own_admin.js',)  
         css = { 
          'all': ('css/admin/my_own_admin.css',) 
         } 
    
  2. 模板级别:如果你想改变一般的管理员,应该重写管理模板的外观。这在这里详述:Overriding admin templates

有时您可以扩展原始管理文件,然后覆盖django/contrib/admin/templates/admin/base.html中的{% block extrastyle %}{% endblock %}这样的块作为示例。