4

我在模型中有这个

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 会自己做

4

2 回答 2

19

还要确保您的表单enctype在 HTML 中设置为提交文件数据:

<form action="..." method="POST" enctype="multipart/form-data">
于 2011-06-27T06:16:15.890 回答
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-method

除了save()andsave_m2m()方法,a 的ModelForm工作方式与任何其他表单形式完全相同。例如,该is_valid()方法用于检查有效性,该is_multipart()方法用于确定表单是否需要分段文件上传(以及因此是否request.FILES必须传递给表单)等。

于 2011-06-27T06:10:05.090 回答