Django 管理员 list_display 项的自定义值

Custom value for list_display item on Django admin

在一个模型中,我有一个字幕字段,如果给定的 object.

字段不存在任何值,则用 None 填充该字段

有什么方法可以将值显示为自定义值(例如 Not AvailableNot Applicable 而不仅仅是显示 (None)

字段

sub_title = models.CharField(max_length=255, null=True, blank=True) 

管理员

 list_display = 'sub_title', 

PS:我想在数据库中 None,而自定义值只在管理面板上。

谢谢

list_display 可以接受一个可调用对象,所以你可以这样做:

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('get_sub_title',)

    def get_sub_title(self, obj):
        if obj.sub_title:
            return obj.sub_title
        else:
            return 'Not Available'

    get_sub_title.short_description = 'Subtitle'

docs 提供了几个其他选项来提供可调用对象。

如果用empty_value_display

就更好了

empty_value_display
This attribute overrides the default display value for record’s fields that are empty (None, empty string, etc.). The default value is - (a dash).

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('sub_title',)
    sub_title.empty_value_display = 'Not Available'

这是给django >= 1.9