2012-01-20 7 views
5

Vorrei separare gli utenti in due gruppi diversi, datore di lavoro o impiegato , al momento della registrazione. Sto usando django-userena e per il gruppo di datori di lavoro sto pensando di usare un clone della stessa vista di registrazione tranne che con un URL diverso legato ad esso.Come assegnare un utente ad un gruppo al momento dell'iscrizione usando django-userena?

Quindi, chiunque si iscrive alla url (r '^ iscrizione/datore di lavoro/$) saranno aggiunti al gruppo datore di lavoro con

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

aggiunto alla vista. È questo l'approccio giusto?

risposta

7

Modificato: form.save() restituisce l'utente appena creato. Devi quindi semplicemente aggiungerlo al tuo gruppo. La vista dovrebbe apparire qualcosa di simile:

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')) 

Vorrei anche considerare l'utilizzo di signals, se ciò che si vuole fare è quello di aggiungere ogni utente al vostro datore di lavoro gruppo. Qualcosa di simile a questo aggiungerà ogni utente appena creato ad esso, e vi permetterà di utilizzare il valore di default signup vista da 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

Attualmente la vista ha: 'form = signup_form() se request.method == 'POST': form = signup_form (request.POST, request.FILES) if form.is_valid(): user = form.save() ' Il link alla vista [link] https://github.com /bread-and-pepper/django-userena/blob/master/userena/views.py [link] – Jesramz

+0

Forse proprio prima 'user = form.save()' nella vista, posso aggiungere 'new_user.groups.add (Group.objects.get (name = 'employer')) 'e io sottile k questo è tutto ciò che è necessario nella nuova vista? Perché la vista chiama un modulo che ha un metodo di salvataggio che crea già l'utente. [userena_forms] (https://github.com/bread-and-pepper/django-userena/blob/master/userena/forms.py) – Jesramz

+0

grazie per il tuo commento, controlla se questo funziona per te – StefanoP

Problemi correlati