Jquery 使用Ajax更新Django文件字段

Jquery 使用Ajax更新Django文件字段,jquery,python,ajax,django,Jquery,Python,Ajax,Django,我正在尝试用Ajax更新现有对象的文件字段。在浏览器中创建了一个wav blob,我试图通过将其附加到FormData实例来传递它: var data = new FormData(); data.append('sound', blob); $.ajax({ url: "{% url 'posts:update_audio' instance.pk %}", type: 'POST', data

我正在尝试用Ajax更新现有对象的文件字段。在浏览器中创建了一个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

将您的表单更改为此

instance = get_object_or_404(MyModel, id=pk)
form = MyUpdateAudioForm(request.POST or None,request.FILES, instance=instance)
和ajax url

url: "{% url 'posts:update_audio' pk=instance.pk %}",

把你的表格改成这个

instance = get_object_or_404(MyModel, id=pk)
form = MyUpdateAudioForm(request.POST or None,request.FILES, instance=instance)
和ajax url

url: "{% url 'posts:update_audio' pk=instance.pk %}",

你不知道你刚才帮了我多少忙。非常感谢你!你不知道你刚才帮了我多少忙。非常感谢你!