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

Django Admin列表页提交修改后无法重定向,已有方法无效

在Django Admin列表页使用list_editable后自定义提交跳转页面

当你在Django Admin的changelist视图中使用list_editable时,批量保存的逻辑是由changelist_view处理的,你之前尝试的response_change、response_post_save_change等方法只针对单个对象的编辑页面,所以不会生效。要实现列表页批量修改后的跳转,需要重写Admin类的changelist_view方法。

具体实现步骤

  1. 重写目标ModelAdmin的changelist_view方法,先调用父类方法完成保存逻辑,再根据请求类型和保存结果修改跳转地址。
  2. 判断是否为POST提交的保存操作,确认保存成功后返回自定义重定向响应。

代码示例

from django.contrib import admin
from django.shortcuts import redirect
from django.contrib import messages
from django.urls import reverse
from .models import YourModel

class YourModelAdmin(admin.ModelAdmin):
    list_display = ['name', 'editable_field1', 'editable_field2']
    list_editable = ['editable_field1', 'editable_field2']

    def changelist_view(self, request, extra_context=None):
        # 先让父类完成保存等核心逻辑
        response = super().changelist_view(request, extra_context)
        
        # 判断是否是触发保存的POST请求
        if request.method == 'POST' and '_save' in request.POST:
            # 检查是否有保存成功的提示消息(确保只有保存成功才跳转)
            success_messages = [msg for msg in messages.get_messages(request) if msg.level == messages.SUCCESS]
            if success_messages:
                # 跳转到指定页面,示例为其他模型的列表页
                return redirect(reverse('admin:otherapp_othermodel_changelist'))
        
        return response

补充说明

  • 如果不需要判断保存状态,直接在POST提交后跳转,可以去掉消息检查逻辑,直接返回重定向。
  • 建议用reverse生成跳转URL,避免硬编码,提升代码可维护性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:06:23