禁用Django中布尔字段的开/关图标

Ant*_*ins 5 django user-interface boolean django-admin

有时不希望为布尔字段显示"开/关"图标.

例:

  • error当出现错误时,字段显示一个快乐的绿色'ok'图标
  • blocked=True显示为绿色'ok',而blocked=False'no entry'标志.

在这种情况下,保持原始True/ False行为会更好.

有没有更优雅的方式不是创建一个特殊的方法返回例如self.error,添加short_description,ordering等等呢?

Aam*_*nan 11

使用此代码没有肮脏admin.py:

from mysite.models import Test
from django.contrib import admin

class TestAdmin(admin.ModelAdmin):
    list_display = ('is_blocked_col',)

    def is_blocked_col(self, obj):
        return not obj.is_blocked # invert the boolean value
    is_blocked_col.boolean = True
    is_blocked_col.admin_order_field = 'is_blocked'
    is_blocked_col.short_description  = 'Is Blocked'

admin.site.register(Test, TestAdmin)
Run Code Online (Sandbox Code Playgroud)

如果您使用此方法,它仍将显示开/关图标.如果is_blocked=True那样return not obj.is_blocked将返回False显示为您所需的红色图标.

编辑

如果您想使用单词True/False而不是您可以设置的红色/绿色图标

is_blocked_col.boolean = False

在上面的代码中.