如何根据模型值在 Django 管理图标中显示
Posted
技术标签:
【中文标题】如何根据模型值在 Django 管理图标中显示【英文标题】:How to show in Django Admin Icons based on model value 【发布时间】:2021-12-08 15:54:23 【问题描述】:我需要在列表中的 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'))
【问题讨论】:
你能详细说明你想在哪里显示图标吗?你能分享一下管理员和模型代码吗? @AjayLingayat 我更新了我的问题。该图标应该在列表上的 django 管理后端可见,并更改对象的视图。 (127.0.0.1:8000/admin)。 您可以在list_display
中添加图标,方法是创建一个可以返回格式化的html 字符串的函数,以根据字段的值显示图标。您可以参考realpython.com/customize-django-admin-python/… 了解如何自定义管理模板。
【参考方案1】:
您创建一个类似 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
【讨论】:
以上是关于如何根据模型值在 Django 管理图标中显示的主要内容,如果未能解决你的问题,请参考以下文章