django 表单动态选择框

0 投票
1 回答
635 浏览
提问于 2025-04-17 05:59

我不太明白发生了什么。我在我的表单里有一段代码:
mylist = forms.MultipleChoiceField(required=False, widget=forms.SelectMultiple, label='MyList',help_text = "help")
然后我在页面上用一些jquery动态添加值到这个选择框里,但当我提交表单时,出现了一个问题,提示“form.is_valid为假,'object has no attribute 'cleaned_data'”

这个问题似乎只在我动态添加值到选择框后,如果我在提交之前选择了一些值时才会出现。如果我没有选择任何值,cleaned_data["mylist"] 就是一个空数组。

我该怎么解决这个问题呢?基本上,我想在提交后从django表单中访问我动态添加的值列表。

edit
-----
    if request.method == 'POST':
        form = MyForm(request.POST)
        action = request.POST['submit']

        if action == 'Update':
                mylist = form.cleaned_data['mylist']
    else:
        form = MyForm()

编辑

def clean_mylist(self):
    data = self.cleaned_data('mylist')
    return data


def clean(self):
    cleaned_data = self.cleaned_data
    return cleaned_data

1 个回答

1

当你提交表单时,MultipleChoiseField 会检查你选择的所有项目是否都在 MultipleChoiseField 的选项列表中。如果你之后动态添加了字段,这些字段自然就不在选项列表里了。想了解更多,可以点击 这里

作为解决方案,你可以考虑使用 CharFieldSelectMultiple 这个工具,并重写它的清理方法。

撰写回答