【发布时间】:2015-09-18 21:21:03
【问题描述】:
我有第二个表格,必须在第一个表格之后提交。 但是,我无法保存两个模型之间的关系,除非我让提交表格的人选择第一个表格的电子邮件。我的想法是直接在后端提供这些信息,但我做不到。
我的模型太大了,无法在这里发布,所以如果有任何人可以帮助我提出一个通用的想法,我会很高兴。
我在 Django 中以两种形式使用 ModelForm。
我的模特: 用户 人 志愿者 - 客户 - 员工
比我有 3 种类型的志愿者:管理员;程序;委员会; 填写完 Volunteer-Person-User 模型后,我需要转到 Volunteer Admin 或 Volunteer Program 或 Volunteer Committee 的下一个表格;
因为用户也使用电子邮件作为主键,这就是我从管理程序创建外键时的值,并且模型表单为我提供了电子邮件的选择。但在数据库上,只保留id供参考。
我处理第一个表单的第一个视图:
def volunteer_form(request):
if request.method == 'POST':
form = VolunteerForm(request.POST)
if form.is_valid():
saving = form.save(commit=False)
saving.password = make_password(form.cleaned_data['password'])
saving.save()
item = saving.id
if saving.person_volunteer_type == 'Program':
return HttpResponse('<script language="JavaScript"> location.href="http://127.0.0.1:8000/login/volunteer_program?id=' + str(item) + '" </script>')
elif saving.person_volunteer_type == 'Admin"]':
return HttpResponse('<script language="JavaScript"> alert("You have sucessful created a new Volunteer"); location.href="http://127.0.0.1:8000/login/clock_in/" </script>')
elif saving.person_volunteer_type == 'Committee':
return HttpResponse('<script language="JavaScript"> alert("You have sucessful created a new Volunteer"); location.href="http://127.0.0.1:8000/login/clock_in/" </script>')
else:
form = VolunteerForm()
return render(request, 'loginPortal/volunteer_form.html', {'form' : form})
关于处理第二种形式:
def volunteer_program(request):
if request.method == 'POST':
form = VolunteerProgramForm(request.POST)
if form.is_valid():
saving = form.save(commit=False)
saving.pvolunteer_personid_id = form.cleaned_data.get('id_pvolunteer_personid_id')
saving.save()
return HttpResponse('<script language="JavaScript"> alert("You have sucessful created a new Volunteer"); location.href="http://127.0.0.1:8000/login/clock_in/" </script>')
elif request.method =='GET':
item = request.GET['id']
form = VolunteerProgramForm()
return render(request, 'loginPortal/volunteer_program.html', {'form' : form , 'item' : item })
else:
form = VolunteerProgramForm()
return render(request, 'loginPortal/volunteer_program.html', {'form' : form })
【问题讨论】:
-
如果您的模型太大,请发布一个较短的示例。这会让你更容易理解你想要做什么。
-
我不确定我是否关注,您是说第一个表单需要填写
email字段,但该字段在第二个表单上? -
你可以只发布具有相关字段的模型,以及处理表单的视图吗?
-
你能用这些信息编辑你的问题吗?
标签: python django forms foreign-keys modelform