2013-09-10 121 views
1

是否有任何簡單的方法可以在初始化後更改Django模型窗體的實例?django更改模型窗體實例

例如目前在分貝爲對象爲1的ID下面將預先填充形式與所述內容的模板:

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

這也將保存相關的對象時保存( )被調用而不是創建一個新的。

在哪裏,這將創建一個新的對象,而不是預先填充表單模板:

form = exampleModelForm() 

,因爲我從一個不同的方法返回一個空白表格,然後,我會想指定實例在它被創建後修改它並修改該對象,以便保存它並使用db中存在的值預填充模板。我想是這樣的,但似乎我已經試過不工作:

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

有沒有辦法,我在這裏失蹤的簡單功能?

回答

1

我沒有測試過這個,但我不知道你是否可以用返回的表單數據和實例作爲新對象重新初始化一個新表單。

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

如果沒有,應該有一種方式來獲得的數據作爲鍵/值對從form領域返回的字典,使用它的._meta數據。我想如果你發送該字典到表單init,它會將這些值分配給實例對象,就像發送它request.POST一樣。