Python django-模型中所有字段的form.cleaned_data[]
我正在使用django对表单进行数字化。这个表单有点复杂,里面有很多字段。我想知道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':
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