我有三种不同的形式:
class Questions(forms.ModelForm):
class Meta:
model = Client
fields = ['life_areas', 'life_desires', 'life_ambitions',]
class BasicContact(forms.ModelForm):
class Meta:
model = Client
fields = ['status', 'first_name', 'email_address', 'country',]
class PhoneContact(forms.ModelForm):
class Meta:
model = Client
fields = ['phone_number', 'best_time', 'preferences',]
我创建了一个表单向导,它使用这三个表单收集信息。你知道吗
FORMS = [("questions", Questions),
("basiccontact", BasicContact),
("phonecontact", PhoneContact),]
class ClientFormWizard(SessionWizardView):
form_list = FORMS
def done(self, form_list, form_dict, **kwargs):
# get data from the forms
questions = form_dict['questions']
basiccontact = form_dict['basiccontact']
phonecontact = form_dict['phonecontact']
formdata = dict(questions.items() + basiccontact.items() + phonecontact.items())
clientform = ClientForm(formdata)
new_client = clientform.save()
# return redirect(...)
我基本上是尝试将三个表单中的信息连接到一个ClientForm中,然后保存它。但是,我不知道如何连接这三种形式的信息。我试着用字典的方法做,但没用。实现这种连接的最佳方法是什么?你知道吗
编辑:看完表单API文档后,我终于明白了。这是我从3个表格中汇总信息的方式:
formdata = dict()
for f in form_list:
formdata.update(f.cleaned_data)
表单列表包含所有提交表单的实例。我们只是把这些信息提取出来,放到一个叫做formdata的新字典里。在那之后,它就起作用了。你知道吗
不要使用
some_form.items()
,而是使用some_form.cleaned_data
,它将返回一个已验证POST数据的字典。你知道吗所以,正如你所想,它会写着:
相关问题 更多 >
编程相关推荐