2012-01-20 27 views
5

Tôi muốn tách người dùng thành hai nhóm, chủ nhân khác nhau hoặc nhân viên, khi đăng ký. Tôi đang sử dụng django-userena và cho nhóm chủ lao động, tôi đang nghĩ đến việc sử dụng bản sao của cùng một chế độ xem đăng ký ngoại trừ một url khác được gắn với nó.Cách chỉ định người dùng cho một nhóm khi đăng ký bằng django-userena?

Vì vậy, bất cứ ai ký tại url (r '^ signup/sử dụng lao động/$) sẽ được thêm vào nhóm sử dụng lao động với

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

thêm vào xem. Đây có phải là cách tiếp cận đúng?

Trả lời

7

Đã chỉnh sửa: form.save() trả về người dùng vừa tạo. Sau đó bạn chỉ cần thêm nó vào nhóm của bạn. tầm nhìn của bạn sẽ giống như:

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

tôi cũng sẽ xem xét sử dụng signals, nếu những gì bạn muốn làm là thêm mỗi người dùng- nhóm sử dụng lao động của bạn. Một cái gì đó như thế này sẽ bổ sung thêm mỗi người dùng mới được tạo ra với nó, và sẽ cho phép bạn sử dụng giao diện mặc định signup từ 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

Hiện nay quan điểm có: 'dạng = signup_form() nếu request.method == 'POST': form = signup_form (request.POST, request.FILES) nếu form.is_valid(): user = form.save() ' Liên kết tới chế độ xem [link] https://github.com /bread-and-pepper/django-userena/blob/master/userena/views.py [link] – Jesramz

+0

Có thể ngay trước 'user = form.save()' trên khung nhìn, tôi có thể thêm 'new_user.groups.add (Group.objects.get (tên = 'chủ nhân')) 'và tôi mỏng k đây là tất cả những gì cần thiết trong giao diện mới? Vì chế độ xem gọi một biểu mẫu có phương thức lưu tạo người dùng. [userena_forms] (https://github.com/bread-and-pepper/django-userena/blob/master/userena/forms.py) – Jesramz

+0

cảm ơn bạn đã bình luận của bạn, hãy kiểm tra xem điều này có phù hợp với bạn – StefanoP

Các vấn đề liên quan