Django用户CV文件上传提交成功但未保存到media目录问题排查
问题解决
核心错误原因
你的视图层代码中实例化DocumentForm时,instance参数传值类型不匹配:DocumentForm绑定的是ResumeDocument模型,你却传入了request.user(属于User模型实例),表单无法将文件字段写入到类型不匹配的实例中,因此虽然表单校验通过提示成功,但实际没有完成文件保存逻辑。
因为ResumeDocument和User是一对一关联关系,你需要先获取或创建当前用户对应的ResumeDocument实例,再传入表单的instance参数。
修正后的代码
views.py修改部分
def pdf_resume(request): # 先获取当前用户对应的简历文档实例,不存在则自动创建 resume_instance, _ = ResumeDocument.objects.get_or_create(user=request.user) if request.method == 'POST': # 传入正确的ResumeDocument实例作为instance参数 form = DocumentForm(request.POST, request.FILES, instance=resume_instance) if form.is_valid(): form.save() messages.success(request, f'Done!!!!') return redirect('pdf_resume') else: form = DocumentForm(instance=resume_instance) context = {'form':form} return render(request, 'reg/pdf_resume.html', context)
其他验证说明
你现有的模型、表单、前端代码都没有问题,且后台上传正常说明MEDIA_ROOT等媒体存储配置正确,修改上述视图代码即可解决问题。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

