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

时间:2021-04-01 15:47:41

I would like to separate users into two different groups, employer or employee, at signup. I'm using django-userena and for the employer group I'm thinking of using a clone of the same signup view except with a different url tied to it.

我希望在注册时将用户分为两个不同的组,雇主或员工。我正在使用django-userena,对于雇主组,我正在考虑使用相同注册视图的克隆,除非绑定了不同的URL。

So whoever signs up at url(r'^signup/employer/$) will be added to the employer group with

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

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

added to the view. Is this the right approach?

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

1 个解决方案

#1


8  

Edited: form.save() returns the user just created. You have then to simply add it to your group. Your view should look something like:

编辑: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'))

I would also consider using signals, if what you want to do is to add every user to your employer group. Something like this will add each newly created user to it, and will allow you to use the default signup view from userena:

我还会考虑使用信号,如果您想要做的是将每个用户添加到您的雇主组。这样的东西会将每个新创建的用户添加到其中,并允许您使用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'))

#1


8  

Edited: form.save() returns the user just created. You have then to simply add it to your group. Your view should look something like:

编辑: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'))

I would also consider using signals, if what you want to do is to add every user to your employer group. Something like this will add each newly created user to it, and will allow you to use the default signup view from userena:

我还会考虑使用信号,如果您想要做的是将每个用户添加到您的雇主组。这样的东西会将每个新创建的用户添加到其中,并允许您使用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'))