2015-12-04 31 views
1

时,我有一个自定义的用户配置:填充用户配置使用RegistrationView

class UserProfile(models.Model): 
    BUYER_USER = 1 
    CLIENT_USER = 2 
    ARTIST_USER = 3 
    ADMIN_USER = 3 
    USER_CHOICES = (
     (BUYER_USER, 'Buyer'), 
     (CLIENT_USER, 'Client'), 
     (ARTIST_USER, 'Artist'), 
     (ADMIN_USER, 'Admin'), 
    ) 

    # This field is required. 
    user = models.OneToOneField(User) 

    usertype = models.IntegerField(choices=USER_CHOICES, default=BUYER_USER) 
    dob = models.DateField(blank=True, null=True) 
    address = models.TextField(max_length=8, blank=True, null=True) 

我使用django-registration-redux来管理帐户。内置的登记观点以下布局:

enter image description here

但我想移动到以下布局:

enter image description here

我知道如何更改模板并调整布局对于与User模型相关的字段,但我不知道如何告诉django-registration-redux根据输入的RegistrationView表单中的数据填充UserProfile

这是可能的吗?怎么样?

回答

1

我认为可能的答案是为UserProfile创建一个表单,并将其添加到redux注册视图。找到查看功能并查看他们正在检查表格是否正在提交is_valid(),并将您的Userform添加到if块中,以检查它是否有效。为了能够填充用户配置与终极版登记表,你可以做以下

user_form.save(commit=false) 
user_form.user = registration_form.user 
user_form.save() 

通过这种方式,用户配置用户领域是贝因填充了注册模型user领域。

道歉,如果这是完全错误的,因为我不熟悉registration-redux软件包,但这是我通常这样做的。

下面是关于如何使用基于类的观点做一个GitHub的要点:https://gist.github.com/michelts/1029336

在这种情况下,你需要修改注册,终极版registration/views.pyhttps://github.com/macropin/django-registration/blob/master/registration/views.py#L68-L119

+0

谢谢!我必须围绕这个:我已经看到'form_valid'和'register'方法只接受一种形式。我怎么能在这里使用两种形式? – dangonfast

+0

@gonvaled原来,CBV无法一次处理两种表单,但是您可以在单独的验证中处理两种表单http://stackoverflow.com/a/15499249/4708186如果您需要一次使用两种表单,则需要使用函数视图,但在这种情况下,我不认为你需要这样。只要做为我在用户注册时编写的代码块,然后将其重定向到Userprofile表单页面来填写剩余的代码块?只是一个替代建议。或者甚至你可以让我们的FV来验证注册简化表单和你的用户简介表格! – qasimalbaqali

+0

还在思考这个问题:实际上,我不需要两种形式,只有一种形式可以分成两种模式。 – dangonfast