我试图了解 Django 的 ModelForm 保存方法和直接保存 Model 实例之间的区别。
就个人而言,我发现直接保存更直观,更清楚地显示数据何时保存。另外,如果我需要在保存之前修改实例,那么我必须使用模型保存方法,正如 Django 文档在此处解释的那样。
那么,一旦表单被验证,有什么区别呢?如果表单使用多个模型或其他更复杂的用例,会有区别吗?
如果这很重要,我正在使用 Django 1.4 版。下面是一些代码,显示了我如何倾向于保存经过验证的表单数据。
提前致谢!
# models.py
class Project(models.Model):
project_name = models.CharField(unique=True, null=False, blank=False)
# views.py
def add_project(request):
if request.method == 'POST':
project = Project()
form = ProjectForm(request.POST, instance=project)
if form.is_valid():
project.save() ### <-- project.save() vs form.save() ###
return HttpResponseRedirect(reverse('view_project', args=(project.id,)))
else:
form = ProjectForm()
return render_to_response(
'add_project.html',
{
'form': form,
},
context_instance=RequestContext(request)
)
# forms.py
class ProjectForm(ModelForm):
class Meta:
model = Project