Django 设置某些管理员更改列表行的样式

Django 设置某些管理员更改列表行的样式,django,django-admin,Django,Django Admin,是否有一种简单、通用的方法可以根据管理员更改列表元素的属性对其应用自定义样式 更新 更准确地说:假设我有一个简单的模型对象 Foo field1 field2 field3 @property property1() @property property2() ModelAdmin.list\u display定义为可用字段的子集,因此并非每个属性(字段/属性)都显示在更改列表表中 我希望在满足某些条件时将自定义CSS类应用于对象的行,例如:如

是否有一种简单、通用的方法可以根据管理员更改列表元素的属性对其应用自定义样式

更新

更准确地说:假设我有一个简单的模型对象

Foo

   field1
   field2
   field3

   @property
    property1()
   @property
    property2()
ModelAdmin.list\u display
定义为可用字段的子集,因此并非每个属性(字段/属性)都显示在更改列表表中

我希望在满足某些条件时将自定义CSS类应用于对象的行,例如:如果
foo_instance.property1
True
,则将class
bar
添加到相应的
tr
元素中

现在将模板admin/base_site.html从默认的Django admin模板目录(Django/contrib/admin/templates)复制到模板目录中使用的任何目录的admin子目录中。例如,如果模板目录包括“/home/my\u username/mytemplates”,如上所述,则将django/contrib/admin/templates/admin/base\u site.html复制到/home/my\u username/mytemplates/admin/base\u site.html。别忘了管理子目录

请注意,Django的任何默认管理模板都可以被覆盖。要覆盖模板,只需执行与使用base_site.html相同的操作——将其从默认目录复制到自定义目录,然后进行更改


你所说的“更改列表元素”和“它的属性”到底是什么意思?使用css2或css3选择器,您可以做一些事情。否则,您可能可以使用jQuery(或其他什么)轻松地完成这项工作。因为它仅仅与演示相关,我认为这将是最干净的解决方案。

旧问题,但如果您偶然发现它,以下提示可能会有所帮助

您可以使用自定义管理变更列表行

实现您的示例非常简单:

class FooAdmin(admin.ModelAdmin, ListStyleAdminMixin):
    ...
    def get_row_css(self, obj, index):
        if obj.property1:
            return 'bar'
        return ''

(非免费)还提供“列表行和单元格属性”风格的定制

我知道如何覆盖管理模板;关键是,我认为如果不进行深入的黑客攻击,就无法做到这一点,因为变更列表使用了result_list inclusion标记,该标记返回HTML对象列表(可能是表单集元素)。根据其属性@my question是此处的关键问题,它可能会重复