如何使用有效的表单数据在数据库中创建对象?

问题描述:

我想创建一个帮助函数来验证表单。如果表单有效,那么我将在数据库中创建一个对象。该函数有三个参数,请求,表单和模型。如何使用有效的表单数据在数据库中创建对象?

def form_validate(request, form, model): 
    form = form(request.POST) 
    print form 
    if form.is_valid(): 
    print "the form is valid" 
    # create object using valid form 
    else: 
    print "the form is not valid" 
    # send back items 
    print form.errors.items() 

如果表单是有效的,我想用表单数据创建一个新的模式。我会怎么做?我试图看Django文档(https://docs.djangoproject.com/en/dev/topics/forms/),但我找不到答案。

+0

你应该回到文档。 – danihp 2012-02-08 08:12:09

正如David Wolever表示,采用ModelForms是明显的方式。

您也可以通过cleaned_data词典模型构造(假设字段相同):

def form_validate(request, form, model): 
    form = form(request.POST) 
    print form 
    if form.is_valid(): 
     print "the form is valid" 
     obj = model(**form.cleaned_data) 
     obj.save() 
    else: 
     # etc 

然而,ModelForms真的这样做的最简单的方法,但你可能有兴趣阅读Django的来源,看看他们是如何工作的。

+0

我知道这是一个古老的问题,但我从谷歌中遇到了这个问题,仍然有疑问:如果没有“表单”,我们该做什么,但只有表单* data *是因为来自具有有效载荷的外部域的调用,这样我们*只有*有POST数据才能使用? – 2016-12-16 22:33:14