文件上传使用modelform在Django中提供错误请求

我正在尝试使用模型表单上传文件,但form.save()给了我错误的请求.

这是我的模特:

class cv(models.Model):
    name = models.CharField('Name', max_length=64, null=True)
    path_to_cv = models.FileField('CV', upload_to='/', null=True)

这是表格:

class Step2(forms.ModelForm):
    class Meta:
    model = cv

这是观点:

def phdStep2(request):
    if request.method == 'POST':
        form = PhdStep2(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/step/3/')
    else:
        form = PhdStep2()
    return render(request, 'step2.html', {'form': form})

这是表单的模板:

<form action="/step/2" method="post" class="well form" role="form" enctype="multipart/form-data">
{% csrf_token %}
{% bootstrap_form form %}
{% buttons %}
    <button type="submit" class="btn btn-primary">
        Submit
    </button>
{% endbuttons %}
</form>

这是settings.py中的media_root:

MEDIA_ROOT = '/home/supertux/PyCharm/myproject/admissions/media'
MEDIA_URL = '/media/'

我已经阅读了10个这样的线程,并发现大多数时候问题是我已经合并的形式的enctype.现在据我所知,这应该上传文件,因为它的模型形式,但我总是得到400 Bad Request.我想在数据库中存储文件的名称和路径.我究竟做错了什么?

最佳答案 尝试使用upload_to =’%Y /%m /%d’替换upload_to =’/’,并确保运行django应用程序的用户具有对MEDIA_ROOT的写入权限.如果这些建议都没有帮助您可以打开一些额外的日志记录,希望能够揭示问题所在.

更新:
我建议你将upload_to设置为某个东西,这样你就不会有100个,如果不是1000个文件堆积在同一个目录中.随着时间的推移,将很难管理.我没试过这个,但是如果你把它设置为upload_to =”,它会接受吗?在Django 1.6中,他们使这个参数成为可选的.

Update2:我对哪个版本的可选版本不正确.我正在阅读文档的开发版本.道歉.

点赞