2017-06-19 76 views
0

我正在使用django数字化表单。这种形式有点复杂,其中有很多字段。我想知道Django是否可以为所有字段做form.cleaned_data [],而不是像每个字段那样声明像obj.fieldname = form.cleaned_data['fieldname']这样的变量。django - form.cleaned_data []为模型中的所有字段

我在views.py一个for循环试了一下,但不会工作

这是我讲的for循环:

def get_form_naw(request): 
    if request.method == 'POST': 
     form = Form1(request.POST) 
     if form.is_valid(): 
      for x in Model1(): 
       formname = x.name 
       o = Model1() 
       o.formname = form.cleaned_data[formname] 
      o.save() 
    else: 
     form = Form1 
    return render(request, 'folder/home.html', context=locals()) 

我使用的是mysql数据库。我的形式声明如下: forms.py

class Form1(forms.ModelForm): 

    class Meta: 
     model = Model1 
     exclude = ('id') 
+2

你可以直接保存表单创建对象。为什么你需要按字段创建对象字段? – Rohan

+0

您的排除错过了一个尾随逗号,即'('id',)'。但是,您不应该排除'id'字段,因为它不会被默认包含。 – Alasdair

回答

1

你不应该在田地里循环。您使用的是标准格式,所以你只要save形式:

if form.is_valid(): 
    obj = form.save() 
    ... 

如果你真的需要动态设置字段,可以使用setattr

fieldname = 'username' 
value = 'my_user' 
setattr(obj, fieldname, value) 
0

你可以像保存在此之前得到的数据实例:

if form.is_valid(): 
    obj = form.save(commit=False) #get instance without saving 
    # do your thing 
    obj.save() #save into database