2012-03-28 63 views
2

基於模型的模型形式獲取數據後,說Django的:從構造函數或模型的形式創建對象

form_data = MyModelForm(request.POST) 

然後,我可以通過創建模型的實例

instance = Model(**form_data.cleaned_data) 

或者通過

instance = form_data.save() 

我不知道哪一個是在世界的Django的首選方式

回答

7

這兩者之間有明顯的區別。

instance = Model(**form_data.cleaned_data)不保存數據庫中的對象。它只創建一個本地實例。

instance = form_data.save()將對象添加到數據庫(它執行提交,如果支持的話),並且它還具有觸發驗證的副作用。

如果要在保存對象之前對對象進行自定義後處理,請將commit=False傳遞給save()方法。

instance = form_data.save(commit=False) 
# do some stuff with instance 
instance.save() 
+0

所以有沒有任何情況下Model(** form_data.cleaned_data)可能有用? – airfang 2012-03-29 07:22:56

+0

如果您手動創建模型而不使用'ModelForm'。 – 2012-03-29 08:27:42

+0

instance = Model(** form_data.cleaned_data)然後instance.save()也將對象保存在數據庫中,對嗎? – airfang 2012-03-30 19:02:17

相關問題