2011-01-27 89 views
0

我试图使用来自POST/FILE请求的数据填充Django formset。我能够填充除FileField之外的所有字段。看来initial不能用于将request.FILE传递给FormSet的创建者函数。我的问题是如何将文件传递给FormSet。如何将FileField的初始值传递给Formset(在Django中)

的model.py

class ArticleForm(forms.Form): 
    docfile = forms.FileField() 
    subject = forms.Charfield(max_length=128) 

ArticleFormSet = formset_factory(ArticleForm, extra=2) 

的views.py

formset = ArticleFormSet(request.POST, request.FILE) 
#do some other work, and then re-display the POST data 

data = formset.cleaned_data 
formset = ArticleFormSet(initial=data) 

return render_to_response('some.html', 
          {'formset':formset} 
         ) 

回答

2

不能初始数据传递到一个文件中的字段。 当浏览器渲染它时,<input type="file" />将始终为空。

要通过request.FILES到一个formset,只是将其指定为POST之后的第二个参数。

http://docs.djangoproject.com/en/dev/topics/forms/formsets/#using-a-formset-in-views-and-templates

FormSet(request.POST, request.FILES)

+0

更多问题: 1.用于第二显示,在第一时间上传的文件不在request.FILES。 2.在这种方法中,额外的表单将显示错误消息,因为所有额外表单中的字段都是空的。 如何处理上述问题? – englefly 2011-01-27 08:53:24

0

当您使用文件上传工作,就可以不通过任何初始值。

相关问题