首页 > 解决方案 > Django admin changelist - 链接到相关模型更改页面

问题描述

是否有一种内置方法可以告诉Django在 中显示相关模型的链接changelist

如果我们有模型SchoolStudent,我想在更改列表中显示SchoolStudent指向School对象更改页面的链接。

我可以这样做:

class StudentAdmin(..):
    list_display = [...,'school',...]

    def school(..):
        return mark_safe(..link..)

有内置的方法吗?就像是:

class StudentAdmin(..):
    ...
    related_change_links = ['school']

标签: pythondjangodjango-2.1

解决方案


如果你想要一些定制的东西,我相信这是最Pythonic的方式。否则,我想应该可以解决您的问题。

from django.utils.html import format_html


def school(self, instance):
    school_id = instance.school.pk
    info = (School._meta.app_label, School._meta.model_name)
    url = reverse('admin:{}_{}_change'.format(*info), args=(school_id,))

    return format_html('<a href="{url}">{text}</a>'.format(
        url=url,
        text=school_id))

推荐阅读