Измените шрифт / цвет для поля в интерфейсе администратора django, если выражение True
в представлении списка изменений в интерфейсе администратора django можно ли отметить некоторые поля/строки красным цветом, если они достигают выражения?
например, если есть модель Group
с members
и capacity
, Как я могу визуализировать, когда они полное или переполненный?
3 ответов
для изменения, как и что отображается в представлении списка изменений, можно использовать 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')
Я надеюсь, что это помогает.
кроме того, вы можете использовать
colored_first_name.short_description = 'first name'
для хорошего заголовка столбца
Это старый вопрос, но я добавлю пример из Docs для 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')