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
你提到的领域。
关于python - 如何使用 Django AutoField 编辑 modelForm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19299606/