只有返回一个布尔值,才能在Django管理员中显示一个布尔图标,否则实际返回值?

3ch*_*eel 2 django django-admin

是的,我知道myfield.boolean = True.我要问的是,是否有可能做到这样的事情:

def get_nominees(self, obj):
    return ", ".join([nominee.name for nominee in obj.nominees.all()]) \  # returns a string
        or False  # returns a False icon
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,例如get_nominees.boolean = True,我得到了一个KeyError.

Gre*_*reg 6

这是不可能的myfield.boolean = True- 请参阅django的源代码

这可能是实现您想要做的最简单的方法:

def get_nominees(self, obj):
    from django.contrib.admin.templatetags.admin_list import _boolean_icon
    return ", ".join([nominee.name for nominee in obj.nominees.all()]) \
        or _boolean_icon(False)
get_nominees.allow_tags = True
Run Code Online (Sandbox Code Playgroud)

请注意,该方法_boolean_icon及其前置下划线可能不会以这种方式使用,并且可能会在未来版本的django中发生更改,恕不另行通知.