Djangoのadmin siteで管理画面を作る際、一覧表示している項目がForeignKeyの場合、 その詳細にアクセスできるようになるといいなと思ったら、すでにあったときの備忘録。
Django Admin relation linksを使うと簡単にできる
インストール
$ pip install django-admin-relation-links
使い方
こんなModelの場合、Memberのリストに、所属Groupへのリンクを一覧に追加したい。
from django.db import models class Group(models.Model): name = models.CharField(max_length=200) class Member(models.Model): name = models.CharField(max_length=200) group = models.ForeignKey(Group, related_name='members')
ModelAdminクラスとAdminChangeLinksMixinを追加して、設定すればOK
from django.contrib import admin from django_admin_relation_links import AdminChangeLinksMixin @admin.register(Member) class MemberAdmin(AdminChangeLinksMixin, admin.ModelAdmin): # AdminChangeLinksMixinを追加 # リンクにしたいフィールド名をchange_linksに設定 change_links = ['group'] # change_linksに追加フィールド名に'_link'サフィックスを付けたものを設定 list_display = ['name', 'group_link']
これで、groupフィールドがリンクになって、該当Groupの詳細ページへ遷移できるようになる。
以上!!