2016-05-17 11 views
0

私はシンプルModelFormを作成しようとしました、と私はそのdjangoは、オブジェクトIDを渡すフォームを更新しますか?

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署名ライブラリから渡すことをお勧めします。
このIDを私のテンプレートのフォームPOSTデータに含める場合は、 そのIDの取得を正確に担当している人がわかりませんでした。ビューまたはフォーム自体ですか? ビューでは、組み込みのFormView、またはUpdateViewという意味で、これらのビューでオブジェクトIDがどのように見つかるのでしょうか? signing.dumps(object_id)の出力を隠しフィールドに格納すると仮定します。

+0

なぜフォームにそれを渡す必要がありますか?あなたはすでにそれをビューに持っています。 –

+0

フォームはすべてのフィールドを生成します。そして、このフィールド(符号付きid、またはuuid)は、非表示のフィールドです( – user3599803

+0

)[Djangoでオブジェクトを編集フォームから更新する方法は?](http://stackoverflow.com/questions/4673985/how -to-update-object-from-edit-form-in-django) – e4c5

答えて

1

フォームの作成が完了するまでに、フォームの作成が完了しました。そのmodelFormがあれば、form.instance.idにアクセスすることができます。

しかし、ほとんどの場合、テンプレートにpkは必要ありませんか?また、必要に応じて、インスタンスpk値とともに隠しフォームフィールドを挿入することもできます。テンプレートにpkが必要なのはなぜですか?

POSTデータから別のページにリダイレクトする場合は、ビュー自体のオブジェクトpkにアクセスできます。

0

公式のドキュメントによれば、組み込みビューはdjango.views.generic.detail.SingleObjectTemplateResponseMixinクラスから継承し、self.object属性を提供するために混合されたビューを必要とします。

関連する問題