我有一个返回空cleaned_data的表单集,即使该表单集是有效的。我的观点是这样的:
def edit_files(request):
file_formSet = formset_factory(FileUploadForm)
if request.POST:
formset = file_formSet(request.POST, request.FILES)
if formset.is_valid():
for form in formset:
form_data = form.cleaned_data
if form_data:
up_file = upload_file(form_data['file'])
else:
formset = file_formSet()
return render_to_response('edit_files.html', {'formset': formset})
这是一个上传表单,由于这个问题,我无法保存文件upload_file是我实现的方法之一,它运行良好,我已经测试过了。
好的,我只想完成这个题目因此,如果有人遇到同样的问题,他/她可以使用此页面来解决此解决方案的主要关键是:1-永远不要忘记加密类型2-针对不同功能使用单独的表格
所以在模板中我应该使用:
<form method="POST" action="." encrypt="multipart/form-data">
并使用两个单独的表单来添加和删除文件像这样:这个用于添加文件:
<form method="POST" action="." encrypt="multipart/form-data" id="add_file">
这个用于删除文件:
<form method="POST" action="." encrypt="multipart/form-data" id="delete_file">
当我忘记在is_valid
后面加括号()时,我遇到了同样的错误消息。Formset.is_valid
返回了True
,但由于没有调用is_valid()
函数来返回已清理的数据,因此没有清理的数据。
我认为您需要更改以下行;
... snip ...
for form in formset.forms:
form_data = form.cleaned_data
... snip ...
您似乎缺少表单集中的.forms
部分。
ok在使用了一些断点之后,我发现这实际上是请求的错,请求。FILES为空
tnx对于您的所有答案,我已经解决了问题,我有一个具有两个功能的表单:add_file和del_file我把他们分开后,一切都好了但是页面的外观有问题在我添加一些文件之后,比如3个文件,然后请求。POST已发送,我再次返回页面我实际上看到了三行文件输入,而不是一行它真的降低了美感有什么建议吗?