Django second形式的外键

2024-05-23 19:27:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有第二份表格,必须在第一份表格之后提交。 然而,我不能保存这两个模型之间的关系,除非我给提交表单的人选择第一个选择电子邮件的选项表格。我的想法是直接在后端提供这些信息,但我不能这样做。在

我的模型太大了,不能全部张贴在这里,所以如果有人能帮我一个通用的想法,我会很高兴。在

我在这两种形式中都使用了Django中的ModelForm。在

我的模型: 用户 人 志愿者-客户-员工

比我有三种类型的志愿者:管理;项目;委员会; 填写完志愿者用户模型后,我需要到下一个表格中填写志愿者管理或志愿者计划或志愿者委员会

因为用户也使用email作为主键,所以当我从管理程序中创建外键时,这个值就是这个值,modelform给了我电子邮件的选择。但在数据库中,只保留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})

处理第二张表格时:

^{pr2}$

Tags: 用户模型formidreturnifrequesttype
1条回答
网友
1楼 · 发布于 2024-05-23 19:27:00

一般的回答是,你的第二个模型有第一个模型的外键。请在您的视图帖子中执行以下操作:

1)验证第一个表单,如果无法验证,则返回错误。在

2)验证第二个表单,如果无法验证,则返回错误。在

3)如果两者都验证,则从第一个表单保存实例:

first_instance = first_form.save()

4)保存第二个表单中的实例,而不提交对数据库的更改:

^{pr2}$

5)更新第二个模型实例上的外键:

second_instance.fk_to_first_model = first_instance

6)将第二个实例保存到数据库中

second_instance.save()

7)返回成功!在

相关问题 更多 >