You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Django admin让列表页外键显示为指向关联对象的链接?

实现方案

Django admin 没有原生全局配置项可以直接开启该效果,你可以通过自定义通用 Admin Mixin 实现需求,无需重复编写每个模型的配置逻辑。

  • 第一步:定义通用外键链接转换 Mixin
from django.urls import reverse
from django.utils.html import format_html

class ForeignKeyLinkMixin:
    def __getattribute__(self, item):
        attr = super().__getattribute__(item)
        # 匹配link_开头的动态字段方法
        if item.startswith('link_'):
            field_name = item[5:]
            def inner(obj):
                related_obj = getattr(obj, field_name)
                if not related_obj:
                    return '-'
                # 生成关联对象Admin详情页的路由
                url = reverse(
                    f'admin:{related_obj._meta.app_label}_{related_obj._meta.model_name}_change',
                    args=[related_obj.pk]
                )
                return format_html('<a href="{}">{}</a>', url, str(related_obj))
            inner.short_description = field_name.replace('_', ' ').title()
            return inner
        return attr

    def get_list_display(self, request):
        original_list_display = super().get_list_display(request)
        new_list_display = []
        for field in original_list_display:
            # 识别外键字段,替换为链接生成方法
            try:
                if self.model._meta.get_field(field).many_to_one:
                    new_list_display.append(f'link_{field}')
                    continue
            except:
                pass
            new_list_display.append(field)
        return new_list_display
  • 第二步:给需要开启该功能的 ModelAdmin 继承该 Mixin 即可
from django.contrib import admin
from .models import YourModel

@admin.register(YourModel)
class YourModelAdmin(ForeignKeyLinkMixin, admin.ModelAdmin):
    # 原有配置无需修改,list_display正常填写外键字段即可
    list_display = ['id', 'name', 'foreign_key_field1', 'foreign_key_field2', 'create_time']

额外说明

  • 若需要指定部分外键不转为链接,可在Mixin中新增fk_link_exclude配置项,在字段替换逻辑中增加排除判断即可
  • 该实现不会影响原有list_display_links等Admin配置,也无需修改模型层代码

内容的提问来源于stack exchange,提问作者AlwaysLearning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:24:06