在views.py
中,我按如下方式更新article
个实例:
def articleUpdate(request, articleId):
...
articleToUpdate = get_object_or_404(Article, id=articleId)
...
# POST
articleForm = ArticleForm(request.POST, instance=articleToUpdate)
print(articleToUpdate)
if not articleForm.is_valid():
return render(request, template, {...})
print(articleToUpdate)
articleForm.save()
...
对象articleToUpdate
的第二次打印显示它已被更改。这是方法is_valid()
的副作用吗?发生了什么事?
答案 0 :(得分:2)
当您为模型表单调用form.is_valid()
时,实例会更新。这就是行为since Django 1.2。
如果要访问原始实例,请在视图中两次从数据库中获取对象。
# passed to form, will be updated in place
articleToUpdate = get_object_or_404(Article, id=articleId)
# not passed to form, will be unchanged
unchanged_article = get_object_or_404(Article, id=articleId)