如何使用django-userena在注册时将用户分配到组?

时间:2012-01-20 23:44:09

标签: django django-views registration usergroups

我想将用户分为两个不同的群体,雇主或 员工,在注册。我正在使用django-userena,对于雇主组,我正在考虑使用相同注册视图的克隆,除非有不同的网址绑定它。

因此,任何在url(r'^ signup / employer / $)注册的人都将被添加到雇主组中

new user = user.groups.add(Group.objects.get(name=employer))

添加到视图中。这是正确的做法吗?

1 个答案:

答案 0 :(得分:8)

已修改form.save()会返回刚刚创建的用户。然后,您只需将其添加到您的组中即可。您的视图应如下所示:

form = signup_form() 
if request.method == 'POST': 
    form = signup_form(request.POST, request.FILES) 
    if form.is_valid(): 
        user = form.save()
        user.groups.add(Group.objects.get(name='employer'))

我还考虑使用signals,如果你想要做的是将每个用户添加到雇主组。这样的内容会将每个新创建的用户添加到其中,并允许您使用signup中的默认userena视图:

# somewhere, in your models.py file
@receiver(post_save, sender=User, dispatch_uid='myproject.myapp.models.user_post_save_handler')
def user_post_save(sender, instance, created, **kwargs):
    """ This method is executed whenever an user object is saved                                                                                     
    """
    if created:
        instance.groups.add(Group.objects.get(name='employer'))