Django:使用ModelForm编辑现有的数据库条目

时间:2011-09-08 14:42:24

标签: django django-templates django-forms

我创建了一个ModelForm类,可以创建和编辑数据库条目。创建新条目效果很好,但是,我不知道如何使用ModelForms编辑/更新现有条目。我可以使用:

实例化一个带有数据库实例的ModelForm
form  = MyModelForm(instance=MyModel.objects.get(pk=some_id))

但是,当我将其传递给模板并编辑字段然后尝试保存它时,我创建了一个新的数据库条目而不是更新“some_id”?

EDIT1: 这是我的观点

def editData(request):
if request.method == 'POST':
    form = MyModelForm(request.POST, request.FILES)

    if form.is_valid():
        editedEntry = form.save() # <-- creates new entry, instead of updating

2 个答案:

答案 0 :(得分:45)

请记住,在POST实例化时仍需要使用instance参数。

instance = MyModel.objects.get(whatever)
if request.method == "POST":
    form = MyModelForm(request.POST, instance=instance)
    ...

else:
    form = MyModelForm(instance=instance)

答案 1 :(得分:1)

也可能而且稍短:

instance = MyModel.objects.get(whatever)
form = MyModelForm(request.POST or None, instance=instance)
...