2012-01-20 2 views
5

가입시 사용자를 고용주 또는 명의 직원으로 구분하고 싶습니다. 나는 장고 - userena를 사용하고 고용주 그룹을 위해 나는 그것에 묶여있는 다른 URL을 제외하고 같은 가입보기의 클론을 사용할 것을 생각하고있다.django-userena를 사용하여 가입시 그룹에 사용자를 지정하는 방법은 무엇입니까?

그래서 누구든지 (R '^ 가입/고용주/$) URL에 가입하는 것은

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

뷰에 추가로 고용주 그룹에 추가됩니다. 이것이 올바른 접근 방법입니까?

답변

7

편집 : form.save()은 방금 생성 한 사용자를 반환합니다. 그런 다음 그룹에 추가하면됩니다. 싶은 것은 당신의 고용주 그룹에 마다 사용자를 추가하는 경우, 나는 또한 signals을 사용하는 것이 좋습니다 것

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_form() request.method 경우 : 이런 식으로 뭔가가 각각 새로 만든 사용자를 추가합니다, 당신은 userena에서 기본 signup보기 사용할 수 있습니다 :

# 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

현재보기가를 '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. 이것은 새로운 관점에서 필요한 것입니다. 뷰는 이미 사용자를 만드는 save 메서드가있는 폼을 호출하기 때문에. [userena_forms] (https://github.com/bread-and-pepper/django-userena/blob/master/userena/forms.py) – Jesramz

+0

의견을 보내 주셔서 감사합니다.이 기능이 작동하는지 확인하십시오. – StefanoP