1

初期化後にDjangoモデルフォームのインスタンスを変更する簡単な方法はありますか?

たとえば、次の例では、id が 1 のオブジェクトの現在データベースにあるコンテンツをテンプレートのフォームに事前入力します。

form = exampleModelForm(instance = Model.objects.get(pk=1)

これにより、新しいオブジェクトを作成するのではなく、save() が呼び出されたときに関連するオブジェクトも保存されます。

これにより、新しいオブジェクトが作成され、テンプレートのフォームに事前入力されません。

form = exampleModelForm()

別のメソッドから空白のフォームを返すので、作成後にインスタンスを割り当て、保存できるようにオブジェクトを修正し、テンプレートに存在する値が事前に入力されるようにします。デシベル。私はこのようなものが欲しいのですが、私が試したことはうまくいかないようです:

form = methodThatGetsForm(somearg)
form.instance = ExampleModel.objects.get(pk = getId(somearg))

ここに欠けている単純な機能はありますか?

4

1 に答える 1

2

私はこれをテストしていませんが、返されたフォーム データとインスタンスを新しいオブジェクトとして新しいフォームを再初期化できるかどうか疑問に思っています。

form = methodThatGetsForm(somearg)
new_form = ExampleModelForm(form.cleaned_data, instance=ExampleModel.objects.get(pk=getID(somearg)))
new_form.save()

そうでない場合は、そのデータをform使用して、返されたフィールドのキーと値のペアの辞書としてデータを取得する方法が必要._metaです。その辞書をフォーム init に送信すると、送信するのと同じように、それらの値がインスタンス オブジェクトに割り当てられると思いますrequest.POST

于 2013-09-10T23:09:38.943 に答える