django 更新表单,谁传递对象 ID?

django update forms, who pass object id?

我尝试创建一个简单的 ModelForm,我注意到即使我像那样传递一个更新实例

mymodel = MyModel.objects.get(pk=1)
MyModelForm(instance=mymodel)

django 不会创建隐藏字段或以某种方式在模板中包含对象的 pk。所以我需要自己通过这个? 我不喜欢将我的 id 像 1,2,3.. =21=] 因此,如果我想在我的模板中包含此 id,格式为 POST 数据, 我不明白究竟是谁负责检索该 ID - 是视图还是表单本身? 我所说的视图是指内置 FormViewUpdateView,这些视图如何找到对象 ID?假设将 signing.dumps(object_id) 的输出存储在隐藏字段

当您进入模板时,表单构建已经完成。如果是 modelForm,您可以尝试访问 form.instance.id。

但是,您很可能不需要模板中的 pk,对吗?如果愿意,您还可以使用实例 pk 值注入一个隐藏的表单字段。为什么需要模板中的 pk?

如果您想从 POST 数据重定向到另一个页面,您将有权访问视图本身中的对象 pk。

根据官方文档,内置视图继承自 django.views.generic.detail.SingleObjectTemplateResponseMixin class,这需要与之混合的视图提供 self.object 属性。