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

如何在Django Admin的MyLog列表中为ForeignKey字段User添加跳转链接?

Django Admin实现ForeignKey字段列表页跳转链接

完全可行,Django Admin支持将列表页中的ForeignKey字段设置为跳转至关联模型Admin页面的链接,以下是两种常用实现方式:

方法一:自定义字段方法(兼容所有Django版本)

在MyLogAdmin中定义一个生成链接的方法,替换list_display中的user字段:

from django.utils.html import format_html
from django.urls import reverse
from django.contrib import admin

class MyLogAdmin(admin.ModelAdmin):
    list_display = ["id", "user_link"]
    
    def user_link(self, obj):
        # 生成CustomUser的Admin编辑页URL,需替换appname为你的应用名称
        url = reverse("admin:appname_customuser_change", args=[obj.user.id])
        return format_html('<a href="{}">{}</a>', url, obj.user)
    
    # 设置列表页的列显示名称为"user"
    user_link.short_description = "user"

方法二:使用admin.display装饰器(Django 3.2+)

利用Django 3.2新增的装饰器简化代码:

from django.utils.html import format_html
from django.urls import reverse
from django.contrib import admin

class MyLogAdmin(admin.ModelAdmin):
    list_display = ["id", "user_link"]
    
    @admin.display(description="user")
    def user_link(self, obj):
        url = reverse("admin:appname_customuser_change", args=[obj.user.id])
        return format_html('<a href="{}">{}</a>', url, obj.user)

注意事项

  • 需确保CustomUser已通过UserAdmin注册到Admin后台(即执行过admin.site.register(CustomUser, UserAdmin))。
  • 代码中的appname需要替换为你的CustomUser模型所在的应用名称,比如如果模型在accounts应用下,就写accounts。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:35:03