Как назначить пользователя в группу при регистрации с помощью django-userena? - PullRequest
5 голосов
/ 21 января 2012

Я хотел бы разделить пользователей на две группы: работодатель или сотрудник, при регистрации. Я использую django-userena, и для группы работодателей я собираюсь использовать клон с тем же представлением регистрации, за исключением того, что к нему привязан другой URL.

Таким образом, любой, кто зарегистрируется по URL (r '^ signup / Employer / $), будет добавлен в группу работодателей с

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

добавлено к виду. Это правильный подход?

1 Ответ

8 голосов
/ 21 января 2012

Отредактировано : 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'))

Я бы также подумал об использовании сигналов , если вы хотите добавить каждого пользователя к вашей группе работодатель . Нечто подобное добавит к нему каждого вновь созданного пользователя и позволит вам использовать стандартный вид 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'))
...