2012-01-20 3 views
5

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

Так кто подпишется на URL (г '^ Регистрация/работодатель/$) будут добавлены в группу работодателя с

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

добавил к виду. Правильно ли это?

ответ

7

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

В настоящее время вид имеет: 'вид = signup_form() если request.method == 'POST': form = signup_form (request.POST, request.FILES) if form.is_valid(): user = form.save() ' Ссылка на просмотр [ссылка] https://github.com /bread-and-pepper/django-userena/blob/master/userena/views.py [link] – Jesramz

+0

Возможно, перед 'user = form.save()' в представлении я могу добавить 'new_user.groups.add (Group.objects.get (name = 'employer')) 'и я тонкий k это все, что необходимо в новом представлении? Поскольку представление вызывает форму, в которой есть метод сохранения, который уже создает пользователя. [userena_forms] (https://github.com/bread-and-pepper/django-userena/blob/master/userena/forms.py) – Jesramz

+0

спасибо за ваш комментарий, проверьте, работает ли это для вас – StefanoP