这是我第一次尝试使用Django上传文件。我做了一些事情,虽然我后来意识到这不是正确的做法,但它确实奏效了。当我在对象上调用save时,它是否调用了FileField的内置处理程序?我意识到我应该创建自己的处理程序,但我只是好奇为什么这样做。
def upload_test(request):
user=User.objects.get(pk=user.id)
photoform=PhotoForm()
if request.method=='POST':
photoform=Post_PhotoForm(request.POST,request.FILES)
if photoform.is_valid():
photo=photoform.save(commit=False)
photo.user=user
photo.save()
return HttpResponse('success')
else:
return HttpResponse('%s' %photoform.errors)
return render_to_response("site/upload_test.html", {'photoform':photoform}, context_instance=RequestContext(request))
这是保存对象并将文件上载到FileField中指定的目录。
如果我创建一个以块的形式写入文件的处理程序,我怎样才能保存photoform实例?它会造成重复吗?
感谢您的见解。
答案 0 :(得分:1)
我认为PhotoForm
是ModelForm
?只有docs中所述的手动处理上传文件才需要标准Form
。块处理由models.FileField
及其storage
对象等在后台执行。