如何将FileField的初始值传递给Formset(在Django中)

时间:2011-01-27 08:24:29

标签: django django-forms

我正在尝试使用POST / FILE请求中的数据填充Django formset。我可以填充除FileField之外的所有字段。似乎initial不能用于将request.FILE传递给FormSet创建函数。我的问题是如何将FILE传递给FormSet。

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 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

使用文件上传时,无法传递任何初始值。