首页 > 解决方案 > 如何根据模型值在 Django 管理图标中显示

问题描述

我需要在列表中的 Django Admin 中显示一个图标,并根据该值更改视图。

例如:

如果模型字段eventId有值1,则显示图标(png 或 webfont)

这可能吗?

模型:

class Events(models.Model):
    eventId = models.CharField(_('EventID'), max_length=254, null=False, blank=False, default='', )
    name = models.CharField(_('EventName'), max_length=254, null=False, blank=False, default='', )
    euuid = models.UUIDField(_('UUID'), default=uuid.uuid4, editable=False, unique=True)
    created = models.DateTimeField(_('Created'), auto_now_add=True, blank=True, help_text=_('Date of the creation'))

标签: djangodjango-modelsdjango-templatesdjango-admin

解决方案


您创建一个像icon()这样的方法并将其添加到 list_display、fields 并将其设置为只读。

from django.utils.html import format_html

class EventsAdmin(admin.ModelAdmin):
    ...
    ...

    list_display = ['your_list_display_fields', 'icon']

    fields = ['your_model_fields_for_form', 'icon']

    readonly_fields = ['icon']

    def icon(self, obj):
        if obj.eventId == 1:
            icon_url = '<your_icon_url>'     # get icon url 
            return format_html('<img src="{}">', icon_url)
        return None

推荐阅读