如何在同一页面上组合使用2个表单?

时间:2014-06-22 22:05:45

标签: python django

我有一个UserProfile模型,可以在标准的Django User模型周围添加额外的元数据。我正在创建一个注册页面,我希望用户输入用户模型中捕获的基本用户信息以及UserProfile模型中捕获的常规配置文件信息。

我们如何在Django的一个请求中捕获和验证这两个模型,可能是通过表单?

1 个答案:

答案 0 :(得分:1)

关于是否将User和UserProfile分开,存在有效的争论。如果您想使用单独的类:

@csrf_protect
def register(request, extra_context=None):
    if request.method == 'POST':

        user_form = AddUserForm(data=request.POST, files=request.FILES)
        user_profile_form = AddUserProfileForm(data=request.POST, files=request.FILES)

        if user_form.is_valid() and user_profile_form.is_valid():
            new_user = user_form.save(request.get_host())
            new_user_profile = user_profile_form.save(request.get_host(), new_user)
            return HttpResponseRedirect(reverse('registration_complete'))
    else:
        user_form = AddUserForm()
        user_profile_form = AddUserProfileForm()

    context = {}
    return render_to_response('registration_form.html',
                            {   'user_form': user_form,
                                'user_profile_form': user_profile_form },
                            context_instance=context)