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

Django中Multi Select BooleanField提交后返回JsonResponse仅显示最后一个值如何解决

问题原因

Django的request.POST是QueryDict类型,针对同一键对应多个值的多选提交场景,直接通过默认方式取值/序列化时,仅会返回该键对应的最后一个值,所以你得到的agree_2仅显示22。

解决方法

方法1:极简通用方案

如果可以接受所有字段的返回值都为列表格式(比如csrfmiddlewaretoken返回为["token"]),直接将QueryDict转为普通Python字典即可:

elif 'submit_multiple' in request.POST:
    return JsonResponse(dict(request.POST))

方法2:按需区分单/多值格式

如果需要单值字段保留字符串格式、多值字段保留列表格式,可以遍历QueryDict的lists()方法自行构造返回字典:

elif 'submit_multiple' in request.POST:
    res_dict = {}
    for key, values in request.POST.lists():
        # 长度为1的字段取第一个值转为字符串,多值字段保留列表
        res_dict[key] = values[0] if len(values) == 1 else values
    return JsonResponse(res_dict)

方法3:指定字段单独处理

如果仅需要处理agree_2这一个多值字段,也可以单独通过getlist()方法获取完整值列表:

elif 'submit_multiple' in request.POST:
    res_dict = dict(request.POST)
    # 单独覆盖多值字段的返回结果
    res_dict['agree_2'] = request.POST.getlist('agree_2')
    return JsonResponse(res_dict)

内容的提问来源于stack exchange,提问作者Ahmad Afif A. Hariz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:36:03