2011-06-27 39 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