list_display - 方法的布尔图标

Jas*_*lan 117 django django-admin

当定义了该list_display数组ModelAdmin类,如果一个BooleanFieldNullBooleanField给予用户界面将使用的,而不是在列真/假的文字好看的图标.但是,如果给出了返回布尔值的方法,则只会打印出True/False.

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

Dan*_*man 221

这是有记载的,虽然它有点难找 - 从这里下来几个屏幕,你会发现:

如果给定的字符串是模型的方法,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
Run Code Online (Sandbox Code Playgroud)

  • 你知道如何使用@property装饰器吗?:"AttributeError:'property'对象没有属性'boolean'" (12认同)
  • @Kye http://stackoverflow.com/questions/12842095/how-to-display-a-boolean-property-in-the-django-admin (3认同)

Den*_*nis 5

感谢@daniel-roseman (rtfm)
从 Django 3.2 开始就有了一个装饰器 @admin.display(boolean=True)

如果字符串(中list_display给出)是模型的方法, ModelAdmin或可调用的是回报TrueFalse或者None,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
Run Code Online (Sandbox Code Playgroud)