くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Django admin siteにあるlistで外部参照を詳細ページへのリンクにする

Djangoadmin 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の詳細ページへ遷移できるようになる。

以上!!

参考にしたサイト様