django admin list_display invert(not)一个布尔字段

frn*_*nhr 7 django-admin

我有:

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('name', 'locked', )
Run Code Online (Sandbox Code Playgroud)

它显示该locked字段的漂亮的绿色和红色图标.

我想要的是在locked字段中显示反转值.

所以我写了这个:

def not_locked(obj):
    return not obj.locked
class MyModelAdmin(admin.ModelAdmin):
    list_display = ('name', not_locked,)
Run Code Online (Sandbox Code Playgroud)

这工作(反转值),但它显示丑陋TrueFalse代替漂亮的绿色和红色图标.

如何让它再次显示图标?

小智 17

只需添加到您的方法'not_locked'属性boolean = True,

def not_locked(self, obj):
    return not obj.locked
not_locked.boolean = True
Run Code Online (Sandbox Code Playgroud)