为ModelAdmin
类定义list_display数组时,如果给出BooleanField
或NullBooleanField
,则UI将使用漂亮的图标而不是列中的True / False文本。但是,如果给出了返回布尔值的方法,则只会打印出True / False。
有没有办法让它使用漂亮的图标作为布尔方法?
答案 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
或返回 True
、False
或 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