Skip to main content
 首页 » 编程设计

python之如何使用 Django AutoField 编辑 modelForm

2025年05月04日34youxin

Django 文档提到 Model AutoField 不会在使用 ModelForm 构建的表单中表示。

在编辑和保存该表单时,我应该如何知道底层的 AutoField id 值才能将我的表单数据正确保存到数据库?

我知道我可以在编辑表单中给自己注入(inject)一个隐藏字段,以了解哪一行已被编辑,但是 Django 有没有办法自动管理该隐藏字段或其他一些机制?

非常感谢

艾蒂安

请您参考如下方法:

您可以通过指定 instance=<> 来做到这一点使用 ModelForm 时的参数. 更多信息请参见 documentation here

创建/更新 View 的示例用法:

def myview(request, id=None): 
    if id: 
        obj_to_edit = MyModel.objects.get(id=1) 
        form = MyForm(instance=obj_to_edit) 
    else: 
        obj_to_edit = None 
        form = MyForm() 
 
    if request.method == 'POST': 
        if id: #update 
            form = MyForm(request.POST, instance=obj_to_edit) 
        else: #create 
            form = MyForm(request.POST) 
 
    #rest of the code 

URL 应该是这样的:

url(r'/blah/create/', 'myview'), 
url(r'/blah/edit/(?P<id>[\d+])/', 'myview') 

现在,django 知道它需要编辑而不是创建新对象。

另请注意,如果您使用的是 forms.Form ,您将不得不手动查询唯一字段,或注入(inject)隐藏的 id你提到的领域。