django 表单动态选择框
我不太明白发生了什么。我在我的表单里有一段代码:
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
的选项列表中。如果你之后动态添加了字段,这些字段自然就不在选项列表里了。想了解更多,可以点击 这里。
作为解决方案,你可以考虑使用 CharField
和 SelectMultiple
这个工具,并重写它的清理方法。