Python 如何在同一页上组合使用两个表单?
我有一个UserProfile模型,可以在标准Django用户模型周围添加额外的元数据。我正在创建一个注册页面,我希望用户输入在用户模型中捕获的基本用户信息以及在用户配置文件模型中捕获的一般配置文件信息Python 如何在同一页上组合使用两个表单?,python,django,Python,Django,我有一个UserProfile模型,可以在标准Django用户模型周围添加额外的元数据。我正在创建一个注册页面,我希望用户输入在用户模型中捕获的基本用户信息以及在用户配置文件模型中捕获的一般配置文件信息 我们如何在Django中的一个请求中捕获和验证这两个模型,可能是通过表单实现的?关于是否将用户和用户配置文件分开存在有效的争论。如果要使用单独的类: @csrf_protect def register(request, extra_context=None): if request.m
我们如何在Django中的一个请求中捕获和验证这两个模型,可能是通过表单实现的?关于是否将用户和用户配置文件分开存在有效的争论。如果要使用单独的类:
@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)
这不是对一般问题的回答,但不再建议使用单独的概要文件模型:您应该创建一个自定义用户模型,也许可以通过扩展AbstractUser。那你只需要一张表格anyway@DanielRoseman很有趣,谢谢你。Django是个新手,我担心使用扩展用户模型会妨碍我使用
python social auth
与第三方系统进行身份验证。您还可以创建一个自定义表单,其中包含两个模型的字段,User
和Profile
,当您在视图中管理表单时,您将一些字段分配给User
,将一些其他字段分配给Profile
Nice,感谢您的回复。我找不到任何关于用户表单有效属性的文档。我怀疑您可能指的是user\u form.is\u valid(),但即使是这也不应该是其他表单上的属性。那是什么意思?对不起,那是来自其他地方的鬼魂。别理它。答案已编辑。