list_display - 方法的布尔图标

时间:2011-11-22 12:43:25

标签: django django-admin

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

有没有办法让它使用漂亮的图标作为布尔方法?

2 个答案:

答案 0 :(得分:201)

这是有记录的,虽然它有点难找 - 从here向下看几个屏幕,你会发现:

  

如果给定的字符串是模型的方法,ModelAdmin或返回True或False Djallo的callable将显示一个漂亮的“on”或“off”图标,如果你给方法一个boolean属性的值是True

,给出的例子是:

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

答案 1 :(得分:3)

感谢@daniel-roseman (rtfm)
自 Django 3.2 there is a decorator @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