我已经创建了一个ModelForm类,以便能够创建和编辑数据库条目.创建新条目效果很好,但是我不知道如何使用ModelForms编辑/更新现有条目.我可以使用以下命令使用数据库实例实例化ModelForm:

form  = MyModelForm(instance=MyModel.objects.get(pk=some_id))

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

编辑1: 这是我的观点

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

推荐答案

请记住,当您在POST上实例化时,仍然需要使用instance参数.

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

else:
    form = MyModelForm(instance=instance)

Django相关问答推荐

仅更新模型中的特定字段.Model Django

将所有守护用户对象权限从一个Django用户重新分配给另一个Django用户

DjangoAdmin与外部数据库的模型无法保存或过滤

Django如何在没有ctrl点击的情况下允许多选

如何在 Django 模板中的计数器上进行 for 循环中断?

Django模型中的密码字段

为 Django 模型生成非顺序 ID/PK

Django Blob 模型字段

Django - 在模板中显示当前日期和时间

UnicodeDecodeError:asciicodec can't decode byte 0xe0 in position 0: ordinal not in range(128)

在 Django REST Framework 中找不到资源时如何返回 404

django 复数模板

如何按名称设置 django 模型字段?

PyCharm 无法正确识别需求 - Python、Django

Django模板转义

Django查询否定

如何在该元素中的所有应用程序之间共享元素范围的模板标签

Django:在还原(迁移)后try 访问数据库时权限被拒绝

'function' 对象没有属性 'as_view'

将属性添加到 Django 模型的 Meta 类中