我试图创建一个简单的ModelForm
,我注意到即使我像这样传递更新实例
mymodel = MyModel.objects.get(pk=1)
MyModelForm(instance=mymodel)
django不会创建隐藏字段或以某种方式包含模板中对象的pk。所以我需要自己通过这个?
我不希望将我的ID(如1,2,3 ..)传递给模板,所以我更喜欢传递类似uuid,或使用signing.dumps(object_id)
,然后使用signing.loads(object_id)
来自django签署图书馆
因此,如果我想在我的模板中使用POST数据格式包含此ID,
我不明白谁负责检索该ID - 是视图还是表单本身?
通过视图,我的意思是内置插件FormView
或UpdateView
,这些视图如何找到对象ID?假设将signing.dumps(object_id)
的输出存储在隐藏字段
答案 0 :(得分:1)
当您在模板中时,表单构造已完成。如果是modelForm,您可以尝试访问form.instance.id。
但是,很可能你不需要模板中的pk,对吗?如果您愿意,还可以使用实例pk值注入隐藏的表单字段。为什么你需要模板中的pk?
如果您想从POST数据重定向到另一个页面,您将可以访问视图中的对象pk。
答案 1 :(得分:0)
根据官方文档,内置视图继承自django.views.generic.detail.SingleObjectTemplateResponseMixin类,该类需要与其混合的视图以提供self.object属性。