Django admin上list_display项的自定义值

Riv*_*diz 5 python django django-admin

在模型中,我有一个字幕字段,None如果给定对象的字段没有值,则填充该字段.

有没有办法将值显示给自定义的东西(比如显示Not AvailableNot Applicable不显示)(None)

领域

sub_title = models.CharField(max_length=255, null=True, blank=True) 
Run Code Online (Sandbox Code Playgroud)

管理

 list_display = 'sub_title', 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

谢谢

sol*_*oke 12

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'
Run Code Online (Sandbox Code Playgroud)

文档提供了提供可调用的其他几个选项.


dur*_*enk 9

如果你使用它会更好 empty_value_display

empty_value_display
此属性会覆盖记录的空字段(无,空字符串等)的默认显示值.默认值为 - (破折号).

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('sub_title',)
    sub_title.empty_value_display = 'Not Available'
Run Code Online (Sandbox Code Playgroud)

这是为了 django >= 1.9