List_display-方法的布尔图标

在为 ModelAdmin类定义 list _ display 数组时,如果给定 BooleanFieldNullBooleanField,UI 将使用漂亮的图标而不是列中的 True/False 文本。但是,如果给定了一个返回布尔值的方法,它只会打印出 True/False。

有没有一种方法可以让它使用布尔方法的漂亮图标?

32278 次浏览

这是有记录的,尽管有点难找——从 给你往下看几个屏幕,你会发现:

如果给出的字符串是模型的一个方法,那么如果给方法一个值为 Trueboolean属性,ModelAdmin 或返回 True 或 False Django 的调用将显示一个漂亮的“ on”或“ off”图标。

例如:

def born_in_fifties(self):
return self.birthday.strftime('%Y')[:3] == '195'
born_in_fifties.boolean = True

感谢@daniel-roseman (rtfm)
自从姜戈3.2 有个室内设计师 @admin.display(boolean=True):

如果给定的字符串(在 list_display中)是模型的方法, ModelAdmin或返回 TrueFalseNone、 Django 的调用 将显示一个漂亮的“是”、“否”或“未知”图标,如果您将 方法,使用 display()修饰符传递 boolean参数 设置为 True的值:

class Person(models.Model):
birthday = models.DateField()


@admin.display(boolean=True)
def born_in_fifties(self):
return 1950 <= self.birthday.year < 1960

我得到了这个为我工作(Django 3.1.10)

class MyAdmin(MyModel):
list_display = ("field_as_boolean", )
    

def field_as_boolean(self, obj):
return True if obj.field else False
field_as_boolean.boolean = True
field_as_boolean.short_description = "field_name"