Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django-模型中所有字段的form.cleaned_data[]_Python_Mysql_Django_Forms - Fatal编程技术网

Python django-模型中所有字段的form.cleaned_data[]

Python django-模型中所有字段的form.cleaned_data[],python,mysql,django,forms,Python,Mysql,Django,Forms,我正在使用django对表单进行数字化。这个表单有点复杂,里面有很多字段。我想知道Django是否可以为所有字段声明form.cleaned_data[],而不是为每个字段声明变量,如obj.fieldname=form.cleaned_data['fieldname'] 我在views.py中尝试了一个forloop,但这不起作用 这就是我所说的forloop: def get_form_naw(request): if request.method == 'POST':

我正在使用django对表单进行数字化。这个表单有点复杂,里面有很多字段。我想知道Django是否可以为所有字段声明form.cleaned_data[],而不是为每个字段声明变量,如
obj.fieldname=form.cleaned_data['fieldname']

我在views.py中尝试了一个forloop,但这不起作用

这就是我所说的forloop:

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')

你不应该在田地里绕圈子。您使用的是一个模型表单,因此您应该只使用该表单:

if form.is_valid():
    obj = form.save()
    ...
如果确实需要动态设置字段,可以使用


您可以在保存之前获取数据的实例,如下所示:

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

您可以直接保存表单以创建对象。为什么需要按字段创建对象字段?您的排除缺少尾随逗号,即
('id')
。但是,您不需要排除
id
字段,因为默认情况下不会包括该字段。
if form.is_valid():
    obj = form.save(commit=False) #get instance without saving
    # do your thing
    obj.save() #save into database