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

如何在Django admin的list_display中实现点击跳转关联模型对象?

实现方法

你需要在PollerCommentAdmin类中自定义一个返回跳转链接的方法,替换list_display中原有的poller字段即可,具体操作如下:

1. 导入依赖工具

在Admin.py头部引入所需函数:

from django.urls import reverse
from django.utils.safestring import mark_safe

2. 修改Admin类配置

新增自定义列方法,调整list_display配置:

@admin.register(Comment)
class PollerCommentAdmin(admin.ModelAdmin):
    # 把原来的poller替换为自定义的方法名
    list_display = ('user', 'created_on', 'link_to_poller', 'comment', 'flag_count', 'upvote_count',
                    'downvote_count', 'is_public', 'is_removed')
    # 给自定义列设置表头显示名称,和原有保持一致
    link_to_poller.short_description = 'Poller'

    # 自定义生成可跳转链接的方法
    def link_to_poller(self, obj):
        # 注意把下方的your_app_name替换为Poller模型所在的应用名
        poller_edit_url = reverse('admin:your_app_name_poller_change', args=[obj.poller.pk])
        # mark_safe用于告诉Django这段HTML内容无需转义可直接渲染
        return mark_safe(f'<a href="{poller_edit_url}">{obj.poller}</a>')

注意事项

  • reverse参数的url名称规则为admin:<应用名>_<模型名小写>_change,如果不确定对应名称,可以执行python manage.py show_urls命令查询Poller编辑页的url名
  • 如果你给Poller模型的__str__方法定义了返回值,链接显示的文本就是该返回值,你也可以根据需要修改成其他字段,比如obj.poller.title之类的

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:06:01