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

时间:2009-10-01 12:35:25

标签: django django-admin

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

更新

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

Foo

   field1
   field2
   field3

   @property
    property1()
   @property
    property2()

ModelAdmin.list_display被定义为可用字段的子集,因此并非每个属性(字段/属性)都显示在更改列表表中。

我想在满足某些条件时将自定义CSS类应用于对象的行,例如:如果foo_instance.property1True,则将类bar添加到相应的{{} 1}}元素。

3 个答案:

答案 0 :(得分:0)

  

现在将模板admin / base_site.html从默认的Django管理模板目录(django / contrib / admin / templates)复制到您在TEMPLATE_DIRS中使用的目录的admin子目录中。例如,如果您的TEMPLATE_DIRS包含“/ home / my_username / mytemplates”,如上所述,则将django / contrib / admin / templates / admin / base_site.html复制到/home/my_username/mytemplates/admin/base_site.html。不要忘记admin子目录。

     

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

来自django's tutorial

答案 1 :(得分:0)

“更改列表元素”和“它的属性”究竟是什么意思?使用CSS 2或CSS 3选择器,您可以做一些事情。否则,您可以使用jQuery(或其他)轻松完成。由于它只是与演示文稿相关,我认为这将是最干净的解决方案。

答案 2 :(得分:0)

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

您可以使用django-liststyle自定义管理员更改列表行。

实现你的例子非常简单:

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

Django Suit(非免费)还提供“列表行和单元格属性”样式自定义