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

Django Admin保存对象后如何重定向至应用详情视图?

实现Django Admin保存后重定向至应用详情视图

当然可以实现,下面是两种常用的解决方案:

1. 直接重写Admin类的response_change方法

这是最直接的方案,针对特定模型的Admin类修改保存后的跳转逻辑:

在你的应用的admin.py中,找到对应模型的Admin类,重写response_change方法:

from django.shortcuts import redirect
from django.contrib import admin
from .models import Project

class ProjectAdmin(admin.ModelAdmin):
    # 这里保留你原有的Admin配置,比如list_display、fields等
    list_display = ('name', 'created_at')

    def response_change(self, request, obj):
        # 替换成你应用内详情视图的URL名称和参数
        # 假设详情视图的URL配置为 path('project/<int:pk>/', views.project_detail, name='project_detail')
        return redirect('project_detail', pk=obj.pk)
        # 如果URL带应用命名空间,比如'app_name:project_detail',就改成:
        # return redirect('app_name:project_detail', pk=obj.pk)

admin.site.register(Project, ProjectAdmin)

这个方法会完全替换默认的跳转逻辑,用户点击保存后直接跳转到对应模型实例的详情页。

2. 动态传递跳转目标(适配多场景)

如果需要从不同页面进入Admin编辑,保存后返回原页面,可以通过next参数实现:

第一步:生成带next参数的编辑链接

在详情视图的模板中,生成Admin编辑链接时带上当前页面的路径作为next参数:

<!-- 模板中的编辑按钮 -->
<a href="{% url 'admin:app_name_project_change' project.pk %}?next={{ request.path }}">编辑</a>

第二步:在Admin类中读取next参数跳转

修改Admin类的response_change方法,优先使用next参数指定的跳转目标:

from django.shortcuts import redirect
from django.contrib import admin
from django.utils.http import is_safe_url
from .models import Project

class ProjectAdmin(admin.ModelAdmin):
    list_display = ('name', 'created_at')

    def response_change(self, request, obj):
        next_url = request.GET.get('next')
        # 验证URL安全性,防止恶意跳转
        if next_url and is_safe_url(next_url, allowed_hosts=request.get_host()):
            return redirect(next_url)
        # 如果没有next参数, fallback到默认的详情页跳转
        return redirect('project_detail', pk=obj.pk)

admin.site.register(Project, ProjectAdmin)

注意事项

  • 确保你的详情视图URL配置正确,且当前Admin用户有权限访问该视图(通常Admin用户已满足权限要求)。
  • 使用next参数时,一定要通过is_safe_url验证,避免安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 17:08:22