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

kel*_*van 6 django django-models django-admin

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

例如,如果有一个Group带有members和的模型,capacity我怎样才能看到它们拥挤的时候

Dav*_*cic 9

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

请注意,给出的列list_display不是真正的数据库字段不能用于排序,因此需要给Django管理员一个关于实际用于排序的数据库字段的提示.

例如,通过将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')
Run Code Online (Sandbox Code Playgroud)

我希望其中一些有所帮助.


And*_*hev 6

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

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')
Run Code Online (Sandbox Code Playgroud)