Oli*_*Oli 43 django django-models django-forms
我确定我做的事情显然很愚蠢,但我一直试图弄清楚几个小时,现在什么都没有跳出来.
我正在使用ModelForm,因此我可以从模型中公开一些字段进行编辑.2x ImageField,1x TextField.表单已处理且TextField正常工作.两个ImageFields不起作用,这就是我今天在这里的原因.
我正在使用Django 1.0.2
这是相关的代码(询问您是否需要更多 - 而且我不包括HTML,因为该部分似乎工作正常):
模型:
class Company(models.Model):
#...
logo = models.ImageField(upload_to='logos', blank=True)
intro_pic = models.ImageField(upload_to='intropics', blank=True)
intro_text = models.TextField(blank=True)
Run Code Online (Sandbox Code Playgroud)
查看和形式:
def admin_edit(request, company_slug):
company = get_object_or_404(Company, slug = company_slug)
f = AdminEditForm(instance = company)
if request.method == 'POST':
f = AdminEditForm(request.POST, instance = company)
if f.is_valid():
print "Processing form"
print f.cleaned_data['intro_pic']
f.save()
return render_to_response('uadmin/edit.html', {'company':company, 'f':f}, RequestContext(request))
class AdminEditForm(ModelForm):
class Meta:
model = Company
fields = ['logo', 'intro_pic', 'intro_text']
Run Code Online (Sandbox Code Playgroud)
Oli*_*Oli 99
好吧,我觉得自己像个白痴.为了让Django能够处理上传的文件,你需要将request.FILES变量传递给表单(有道理,对吧?!)
在我的情况下,以下行来自:
f = AdminEditForm(request.POST, instance = company)
Run Code Online (Sandbox Code Playgroud)
至:
f = AdminEditForm(request.POST, request.FILES, instance = company)
Run Code Online (Sandbox Code Playgroud)
要检查的另一件事(如果你将来遇到这样的事情)是你的表单是多部分的.您的<form>代码应如下所示:
<form enctype="multipart/form-data" method="post" action="">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10965 次 |
| 最近记录: |