【Django】管理画面でカスタムした値を表示

django-admin-custom-value-title CODE

PythonのフレームワークDjangoの中でも、ユーザーから重宝されているDjango管理画面。

本記事ではDjango管理画面でDBのカラム以外の値を表示する方法を紹介します。

 

なお、この記事で使うPython・Djangoのバージョンは以下のとおりです。

Python 3.7
Django 2.1.7

 

Djangoの管理画面(Adminサイト)では以下の様に、テーブルのカラムを  fieldsets  list_display に指定すれば一覧画面に表示することができます。

class User(AbstractBaseUser, PermissionsMixin):
    """ユーザーモデル"""

    user_id = models.AutoField(verbose_name='ユーザーid', primary_key=True)
    username = models.CharField(_('username'), max_length=50)
    email = models.EmailField(_('email address'), unique=True, max_length=50)
class UserAdmin(admin.ModelAdmin):
    """ユーザー"""

    fieldsets = (
        (None, {'fields': ('username','email',)}),
    )
    list_display = ('user_id', 'username', 'email')

 

しかし、テーブルのカラム以外の値を一覧画面に表示したい場合もあるでしょう。

その場合は以下の様に、新しい関数を作成し、作成した関数名を  list_display に指定すれば表示可能です。

class UserAdmin(admin.ModelAdmin):
    """ユーザー"""

    list_display = ('user_id', 'username', 'email', 'custom_column')

    def custom_column(self, obj):
        return str(obj.user_id) + obj.username   # obj.カラム名でレコード値取得
    custom_column.short_description = 'id+ユーザー名'   # カラム表示名