Django admin listview Customize Column Name

Use:

class AuthorAdmin(admin.ModelAdmin):
    …
    def my_function(self, obj) :
        """My Custom Title"""
    …
    my_function.short_description = 'This is the Column Name'

It's buried in the admin docs. short_description, specifically, is barely mentioned under the discussion of list_display (more by example than actually called out). The other items like this are similiarly buried in the admin docs, but here's a summary:

  • short_description: the column title to use (string)
  • allow_tags: what the name says... let's you use HTML (True or False)
  • admin_order_field: a field on the model to order this column by (string, field name)
  • boolean: indicates the return value is boolean and signals the admin to use the nice graphic green check/red X (True or False)

Starting from Django 3.2 you can use the display decorator. It has the attribute description for changing the name of the column:

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)

For more info about the display decorator see this page