Django的用户个人资料 - 表格

时间:2012-11-26 17:56:21

标签: python django forms web

Django 1.4

很抱歉,如果这是一个愚蠢的问题,我对Django来说还是个新手。 我试图通过内置的身份验证配置文件系统将用户和配置文件链接在一起。我可以找到的所有这些例子都不使用基于类的视图,这是我真正想要使用的。

基本上我想要一个结合了Profile和User的表单,允许我同时创建两者。如果可能,我想使用相同的表格来编辑/创建用户+个人资料。

我为个人资料创建了一个模型:个人资料

创建表单:

class UserForm(forms.ModelForm):
    class Meta:
        model = User


class ProfileRegisterView(FormView):
    template_name = 'profile-register-form.html'
    form_class    = UserForm
    success_url   = '/account/created/'

将配置文件添加到用户模型似乎不包含在UserForm中:

AUTH_PROFILE_MODULE = "creative_profile.Profile"

我尝试的第二种方法是在forms.py中定义单个表单,但form_class属性只接受一个表单模型。

任何指示帮助都会很棒,谢谢

2 个答案:

答案 0 :(得分:0)

我以更简单的方式(我建议)这样做。只需使用django内置。在 urls.py 中我添加了(r'^login/$','django.contrib.auth.views.login')。在 settings.py 中添加 LOGIN_URL ='/ login /'并添加到 MIDDLEWARE_CLASSES 添加'django.contrib.auth.middleware.AuthenticationMiddleware “即可。如果要更改,请在本地复制 registration / login.html 模板。经过这样的操作后,您将能够以用户身份登录。忘了,你也应该从 django.contrib.auth.models 用户和组中导入。

答案 1 :(得分:0)

一种可能的解决方案是在UserForm中包含“配置文件”字段,并覆盖save()方法以填充“配置文件”字段。

如果您没有使用get_or_create()来创建它,则save()方法必须包含对{3}}的post_save signal调用。如果您使用post_save信号来创建Profile模型,那么在调用get_profile()方法之前,您必须确保先保存User。