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

Django集成Select2多选框提交仅获取单个值的异常问题

修复方案

你遇到的多选值仅提交单个的问题属于前端传值异常,和后端getlist方法无关,按以下步骤逐一排查修复即可:

  • 修正select标签的name属性
    Django等后端框架识别同名字段多值时,要求多选字段的name携带数组标识,将原有name="resources"修改为name="resources[]",修正后的表单代码如下:
<div class="form-group">
    <label>Multiple select using select 2</label>
    <select class="js-example-basic-multiple w-100" id='mls' name="resources[]" multiple="multiple">
        <option value="AL">Alabama</option>
        <option value="WY">Wyoming</option>
        <option value="AM">America</option>
        <option value="CA">Canada</option>
        <option value="RU">Russia</option>
    </select>
</div>
  • 检查Select2初始化配置
    确认Select2初始化时没有配置maximumSelectionLength: 1这类限制选中数量的参数,也没有绑定change事件手动清空、覆写选中值,标准初始化参考:
$('.js-example-basic-multiple').select2({
    width: '100%'
    // 不要添加限制选中数量、覆写选中值的逻辑
});
  • 排查自定义提交逻辑的取值问题
    如果你是通过AJAX手动拼接参数提交,不要用只取单个选中值的写法,要直接获取Select2返回的全量选中值数组:
    • 错误写法(仅取第一个选中值):resources: $('#mls option:selected').val()
    • 正确写法(获取全量选中值):resources: $('#mls').val()
  • 排查表单内同名字段冲突
    检查整个表单域,确认不存在其他name="resources"或name="resources[]"的隐藏输入项、单选框,这类同名字段会在提交时覆盖多选框的传值。

验证方法:修改后打开浏览器开发者工具的「网络」面板,重新提交表单查看请求载荷,正常情况下能看到多条resources相关的参数,此时后端调用request.POST.getlist('resources[]')即可获取所有选中的选项值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:20:04