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

Django MultipleChoiceField提交POST数据触发验证错误的问题求助

Django MultipleChoiceField提交POST数据触发验证错误的问题求助

我的Django表单里有一个MultipleChoiceField字段,选项是元组列表:

choice = forms.MultipleChoiceField(
    choices = [("1", "Option 1"), ("2", "Option 2"), ("3", "Option 3")],
    label="Choose an option",
    widget=forms.Select(),
    required=True,
)

页面加载后生成的DOM元素如下:

<select name="choice" id="id_choice">
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
</select>

但提交表单发送POST请求时,后端接收到的不是("1", "Option 1")这样的元组值,而只是"1"。这直接触发了MultipleChoiceField的ValidationError,因为该字段的to_python方法要求POST传入的值必须是列表或元组:

def to_python(self, value):
    if not value:
        return []
    elif not isinstance(value, (list, tuple)):
        raise ValidationError(
            self.error_messages["invalid_list"], code="invalid_list"
        )
    return [str(val) for val in value]

我想问问有没有办法设置DOM元素的POST值,让它能发送对应的元组?之前我试过在views.py里用field.data修改数据,但得到了This QueryDict instance is immutable(这个QueryDict实例是不可变的)的错误提示。

提前谢谢各位的帮忙!

备注:内容来源于stack exchange,提问作者Tom Lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 18:09:35