django:从构造函数或模型表单创建对象

时间:2012-03-28 03:56:25

标签: python django django-models django-forms

根据模型从模型表单中获取数据后,请说

form_data = MyModelForm(request.POST)

然后我可以通过

创建Model的实例
instance = Model(**form_data.cleaned_data)

或者

instance = form_data.save()

我想知道哪一个是django世界的首选方式

1 个答案:

答案 0 :(得分: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()