2012-03-28 60 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

相关问题