如果expression为True,则在django管理界面中更改字段的字体/颜色

时间:2010-08-09 18:16:33

标签: django django-models django-admin

在django管理界面的更改列表视图中,如果它们实现表达式,是否可以将某些字段/行标记为红色?

例如,如果模型Group包含memberscapacity,我如何可视化完整拥挤< / em>的

3 个答案:

答案 0 :(得分:9)

要修改更改列表视图中的显示方式和内容,可以使用list_displayModelAdmin选项。

请注意,list_display中给出的非真实数据库字段的列不能用于排序,因此需要向Django admin提供有关实际用于排序的数据库字段的提示。

可以通过将admin_order_field属性设置为用于在HTML中包装某些值的可调用来实现此目的。

来自多彩字段的Django文档示例:

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    color_code = models.CharField(max_length=6)

    def colored_first_name(self):
        return '<span style="color: #%s;">%s</span>' % (
                             self.color_code, self.first_name)
    colored_first_name.allow_tags = True
    colored_first_name.admin_order_field = 'first_name'

class PersonAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'colored_first_name')

我希望其中一些有帮助。

答案 1 :(得分:2)

此外,您可以使用

colored_first_name.short_description = 'first name'

获得精彩的专栏作品

答案 2 :(得分:1)

这是一个老问题,但我会在Django 1.10的文档中添加一个示例,因为自allow_tags以来,已接受答案中使用的Django 1.9属性已被弃用,建议使用{ {3}}代替:

from django.db import models
from django.contrib import admin
from django.utils.html import format_html

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    color_code = models.CharField(max_length=6)

    def colored_name(self):
        return format_html(
            '<span style="color: #{};">{} {}</span>',
            self.color_code,
            self.first_name,
            self.last_name,
        )

class PersonAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'colored_name')