2010-09-18 71 views
0

我正在使用Ajax代碼上傳文件。 Django非常注重ModelForms上的文件上傳。只要編寫form.save()就可以上傳頭文件中的任何文件數據,如果需要的話管理文件夾的創建,甚至在已經存在重複的情況下重命名文件。藉此的ModelForm其中只有例如一個申請文件名爲:Django ModelForm Ajax上傳

class UploadFileForm(ModelForm): 
    class Meta: 
     model = MyModel 
     fields = ('file',) 

由於我使用Ajax我有我的觀點的唯一信息是request.FILES [「文件」。這是我在我看來的嘗試:

form = UploadFileForm(initial={'file':request.FILES['file']}) 
if form.is_valid(): 
    form.save() 

但它返回無效的形式(需要文件)。我可以使用純Python來做到這一點,但是使用Django的力量在哪裏呢?

+0

如果此答案足夠或不足,請評論和投票?如果它解決了你的問題,接受它。 – FallenAngel 2010-09-18 10:23:01

回答

0
form = UploadFileForm(request.FILES) 
if form.is_valid(): 
    form.save() 

初始參數讓你初始化表單域,就像給一個新表單提交一些初始數據一樣。

在這裏,您正在從請求中獲取文件數據。

+0

謝謝,只需要將代碼的第一行更改爲「form = UploadFileForm(request.POST,request.FILES)」。從我的理解中,第一個參數必須是request.POST。 – Siavash 2010-09-19 08:32:40