2011-06-27 41 views
4
的圖像字段中的額外代碼

我在型號我需要在Django

image_name = models.ImageField(upload_to='accounts/') 

有這個在我看來,我有

def account_form(request): 
    if request.method == 'POST': # If the form has been submitted... 
     form = AccountForm(request.POST) # A form bound to the POST data 
     if form.is_valid(): # All validation rules pass 
       form.save() 
       return HttpResponseRedirect('/thanks/') # Redirect after POST 
    else: 
     form = AccountForm() # An unbound form 

    return render_to_response('account_form.html', { 
      'form': form, 
    }) 

我需要保存的圖像或Django會做一些額外的編碼自己動手

回答

18

您還需要將request.FILES傳遞給您的帳戶。

form = AccountForm(request.POST, request.FILES) # A form bound to the POST data 

參考:https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-methodsave()save_m2m()方法,一個ModelForm作品完全相同的方式與任何其他形式的形式

其他。例如,is_valid()方法用於檢查有效性,is_multipart()方法被用於確定一個形式是否需要多文件上傳(以及因此是否request.FILES必須傳遞給表格)等

+3

我試過了,選擇的圖像,但我不斷收到此錯誤'這個字段是required.' – user2134226

+0

哇,把我的方式來長弄清楚。謝謝! – freb

19

另外,還要確保您的形式enctype在HTML被設置爲提交文件中的數據:

<form action="..." method="POST" enctype="multipart/form-data"> 
+4

除了向AccountForm添加'request.FILES'外,這也適用於我。謝謝! – elimisteve

+0

有一個記錄,它可能很明顯,但如果Django創建(生成)表單,'request.Files'不是必需的,一些細節https://docs.djangoproject.com/en/1.10/topics/http/ file-uploads/ – potar

+0

除了上面的鏈接 - https://docs.djangoproject.com/en/1.10/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin.get_form_kwargs – potar