Django admin listview自定义列名

Fra*_*llo 28 django django-forms django-admin

好的,我有一个基于作者模型构建的自定义django管理员:

class AuthorAdmin(admin.ModelAdmin):
    """
    Author Admin
    """
    form = AuthorForm

    list_display = ['profile_photo', 'first_name', 'last_name', 'title']
    search_fields = ['first_name', 'last_name', 'title', 'credential']
    prepopulated_fields = {'slug': ('first_name', 'last_name', 'title')}

    def profile_photo(self, obj) :
        return '<img src="%s" title="%s" />' % (resize_image(obj.photo, '100x100'), obj.title)

    profile_photo.allow_tags = True
Run Code Online (Sandbox Code Playgroud)

但是在django管理列表视图中,自定义列的列标题没有正确的大小写. 资本化很重要!

有谁知道如何覆盖从自定义函数名称构建的列标题?

我试过了:

def my_function(self, obj) :
    """My Custom Title"""
    ...
Run Code Online (Sandbox Code Playgroud)

def my_function(self, obj) :
    class Meta:
        verbose_name = _(u"My Custom Title")
Run Code Online (Sandbox Code Playgroud)

Chr*_*att 62

使用:

def my_function(self, obj) :
    """My Custom Title"""
    ...
my_function.short_description = 'This is the Column Name'
Run Code Online (Sandbox Code Playgroud)

它隐藏在管理员文档中.short_description具体而言,在讨论中几乎没有提到list_display(更多是通过实例而不是实际调出).像这样的其他项目同样埋没在管理员文档中,但这里是一个总结:

  • short_description:要使用的列标题(字符串)
  • allow_tags:这个名字是什么......让你使用HTML(TrueFalse)
  • admin_order_field:模型上的一个字段,用于对此列进行排序(字符串,字段名称)
  • boolean:表示返回值为布尔值,表示管理员使用漂亮的图形绿色检查/红色X(TrueFalse)


Mar*_*rco 10

Django 3.2开始,您可以使用display装饰器。description它具有用于更改列名称的属性:

class AuthorAdmin(admin.ModelAdmin):

    list_display = ['profile_photo', 'first_name', 'last_name', 'title']

    @admin.display(description='Profile Photo')
    def profile_photo(self, obj) :
        return '<img src="%s" title="%s" />' % (resize_image(obj.photo, '100x100'), obj.title)
Run Code Online (Sandbox Code Playgroud)

有关display装饰器的更多信息,请参阅此页面