如何从Django中的编辑表单更新对象?

可能是一个新手问题,请耐心等待。

我有一个Django表单,可以编辑模型的特定实例。为了知道正在编辑哪个对象,我有一个包含对象ID的隐藏字段以及包含ID的URL。

第一个问题:在隐藏字段中包含对象的ID是否正确?

我(可能是毫无根据的)担心仅将其作为URL的一部分,然后有人可以打开一个对象ID的页面,将表单提交给另一个对象,然后该对象将被覆盖。这就是为什么我要使用隐藏字段的原因。

将ID存储在隐藏字段中的问题在于,在验证表单时,Django抱怨对象显然没有唯一ID。

第二个问题:如果表单中包含唯一字段,那么如何告诉Django忽略该键已经存在的事实,以便更新对象?

回答:

你为什么不只使用ModelForm?

# forms.py

# ...

class MyForm(forms.ModelForm):

class Meta:

model = MyModel

# views.py

# ...

def my_view(request, id):

instance = get_object_or_404(MyModel, id=id)

form = MyForm(request.POST or None, instance=instance)

if form.is_valid():

form.save()

return redirect('next_view')

return render(request, 'my_template.html', {'form': form})

以上是 如何从Django中的编辑表单更新对象? 的全部内容, 来源链接: utcz.com/qa/405052.html

回到顶部