Python django ModelForm save()方法问题

Python django ModelForm save()方法问题,python,django,save,modelform,Python,Django,Save,Modelform,我有一个模型表格: class SnippetForm(ModelForm): class Meta: model = Snippet exclude = ['author', 'slug'] 我希望能够使用以下命令编辑特定实例: def edit_snippet(request, snippet_id): #look up for that snippet snippet = get_object_or_404(Snippet, pk=

我有一个模型表格:

class SnippetForm(ModelForm):
    class Meta:
        model = Snippet
        exclude = ['author', 'slug']
我希望能够使用以下命令编辑特定实例:

def edit_snippet(request, snippet_id):
    #look up for that snippet
    snippet = get_object_or_404(Snippet, pk=snippet_id)
    if request.user.id != snippet.author.id:
        return HttpResponseForbidden()
    if request.method == 'POST':
        form = SnippetForm(data=request.POST, instance=snippet)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(snippet.get_absolute_url())
    else:
        form = SnippetForm(instance=snippet)
    return render_to_response(SNIPPET_EDIT_TEMPLATE,
                              {'form':form, 'add':False, 'user':request.user}, 
                              RequestContext(request))
注意,在

form=SnippetForm(data=request.POST,instance=snippet)

,我创建了一个使用用户提供的数据的表单,并将其与使用主键(从url接收)找到的实例绑定。根据,当我调用save()时,应该使用发布的数据更新现有实例。相反,我看到的是一个新对象被创建并保存到数据库中。出了什么问题?非常感谢


[编辑]这真的很尴尬。代码确实没有什么问题。唯一把整个事情搞砸的是我在模板中的操作(因为我使用同一个模板来添加和编辑片段)…非常感谢您的帮助,非常感谢。

我不明白为什么会发生这种情况。它是什么版本的django

在任何情况下,都可以手动强制更新传递相应的参数

form = SnippetForm(data=request.POST, instance=snippet, force_update=True)

我刚试过你的建议,但没用。我正在使用django 1.2.4。无论如何,谢谢。尝试调试它,我认为问题可能在其他地方。发布的代码没有任何问题-它应该更新现有实例。您能解释操作的错误吗?我想我可能也有同样的问题,但我不确定这个行动会有什么影响。