在django管理界面的更改列表视图中,如果它们实现表达式,是否可以将某些字段/行标记为红色?
例如,如果模型Group
包含members
和capacity
,我如何可视化完整或拥挤< / em>的
答案 0 :(得分:9)
要修改更改列表视图中的显示方式和内容,可以使用list_display
的ModelAdmin
选项。
请注意,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')