【发布时间】:2017-08-25 06:40:44
【问题描述】:
我正在尝试使用 Ajax 更新现有对象的 FileField。在浏览器中创建了一个 wav blob,我试图通过将其附加到 FormData 实例来传递它:
var data = new FormData();
data.append('sound', blob);
$.ajax({
url: "{% url 'posts:update_audio' instance.pk %}",
type: 'POST',
data: data,
cache: false,
processData: false,
contentType: false,
success: function(data) {
alert('success');
}
});
return false;
}
我通过 url 将 pk 传递给视图,因为(如果我错了,请纠正我)但我认为这是指定要更新的正确对象的路径的方法。这是视图:
def update_audio(request,pk):
form = UpdateAudio(request.POST or None, request.POST or None)
if request.method == 'POST':
if form.is_valid():
instance = form.save(commit=False)
instance.save()
return HttpResponseRedirect('/')
我只是将其视为提交表单的任何其他视图。我对这应该如何更新特定对象感到有些困惑,这引出了我的问题:我是否应该为此使用特殊视图,例如 UpdateView?如果是这样,我该如何实施?如果没有,有人知道我哪里出错了吗?当我尝试提交表单时,我目前只是收到内部服务器错误 500。
【问题讨论】: