models.py
class Event(models.Model):
name = models.CharField(max_length=80, blank=False)
description = models.TextField(blank=True)
date = models.DateField(blank=True, null=True)
locked = models.BooleanField(default=False)
admin.py
class EventAdmin(admin.ModelAdmin):
list_display = ('name', 'date', 'locked')
search_fields = ['name']
ordering = ['date']
admin.site.register(Event, EventAdmin)
是否可以更改"锁定"通过单击管理列表中的图标?我已尝试添加" list_editable = ['已锁定']",但红色/绿色图标无法显示。
感谢您的帮助:)
答案 0 :(得分:1)
好的,我明白了。你可以做到这一点。
def is_locked(self, obj):
yes_icon = '<img src="/static/admin/img/icon-yes.svg" alt="True">'
no_icon = '<img src="/static/admin/img/icon-no.svg" alt="False">'
obj.locked = not obj.locked
obj.save()
if obj.locked:
return '<a href="">%s</a>' % yes_icon
else:
return '<a href="">%s</a>' % no_icon
is_locked.allow_tags = True
is_locked.short_description = 'Locked'
答案 1 :(得分:0)
默认情况下,在Django中,列表中的第一个名称是点击,因此您可以使用“锁定”#39;就这样。
list_display = ('locked', 'name', 'date')
或者,您可以在列表视图中使用自定义字段,并在其中附加链接,如下所示:
class EventAdmin(admin.ModelAdmin):
list_display = ('name', 'date', 'is_locked')
search_fields = ('name',)
ordering = ('date',)
def is_locked(self, obj):
yes_icon = '<img src="/static/admin/img/icon-yes.svg" alt="True">'
no_icon = '<img src="/static/admin/img/icon-no.svg" alt="False">'
if obj.is_tracer:
return '<a target="_blank" href="%s/change/">%s</a>' % (obj.pk, yes_icon)
else:
return '<a target="_blank" href="%s/change/">%s</a>' % (obj.pk, no_icon)
is_locked.allow_tags = True
is_locked.short_description = 'Locked'
并在列表视图中添加:
list_display = ('name', 'date', 'is_locked')