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

Django Admin中_save、_addanother、_continue按钮功能异常排查

Django Admin 提交按钮行为异常排查方案

问题:Django Admin中「保存」「保存并添加另一个」「保存并继续编辑」三个按钮点击后行为完全一致,均仅保存模型并跳转至主页;且打印request.POST时,未发现按钮对应的_save/_addanother/_continue参数。

排查步骤与解决方法

1. 检查自定义Admin模板

若你自定义了change_form.html模板,需确认提交按钮区域的代码符合Django默认规范:

  • 按钮必须设置正确的name属性,示例代码如下:
<div class="submit-row">
    {% if show_save %}<input type="submit" value="保存" class="default" name="_save">{% endif %}
    {% if show_save_and_add_another %}<input type="submit" value="保存并添加另一个" name="_addanother">{% endif %}
    {% if show_save_and_continue %}<input type="submit" value="保存并继续编辑" name="_continue">{% endif %}
</div>
  • 确保按钮的type为submit,而非button(若使用button类型,需手动绑定提交逻辑并携带按钮参数)。

2. 排查前端自定义JS

检查页面是否存在自定义JavaScript代码:

  • 若通过AJAX或手动构造FormData提交表单,需确保将点击按钮的name和value添加到提交数据中。例如:
document.querySelector('.submit-row input[type="submit"]').addEventListener('click', function(e) {
    e.preventDefault();
    const form = this.form;
    const formData = new FormData(form);
    // 必须添加当前按钮的参数
    formData.append(this.name, this.value);
    // 后续提交逻辑...
});

3. 检查后端中间件

排查是否存在自定义中间件修改了request.POST:

  • 临时禁用所有自定义中间件,测试按钮行为是否恢复正常。若恢复,逐一排查中间件代码,确认是否过滤了_save/_addanother/_continue这类参数。

4. 验证请求原始数据

在response_add方法中打印原始请求体,确认参数是否被前端正确发送:

def response_add(self, request, obj):
    print(request.body)  # 查看原始POST数据
    print(request.POST)
    return super().response_add(request, obj)
  • 若request.body中存在按钮参数但request.POST中没有,说明后端逻辑(如中间件)过滤了参数;若原始数据中也没有,问题出在前端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:53:31