2017-06-15 68 views
0

我有一個模型爲了擴展用戶模型與一些額外的字段。 「治療」模型的用戶字段是從django.contrib.auth.models連接到用戶的OneToOneField。下面的代碼:Django:從oneToOneField創建工作人員用戶

from django.db import models 
from django.contrib.auth.models import User 

class Therapeut(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    # some more fields here 

現在,當我想從通過Django管理模型添加一個「therapeut」,我可以從可用的用戶選擇或添加一個新的。

當點擊我添加一個新的(綠色+用戶下拉菜單旁邊)時,我希望新用戶具有員工狀態並將其添加到用戶組「therapeuten」,以管理此權限新用戶。

我看不到如何實現這(自動),我也沒有選擇設置員工狀態和用戶組在彈出。注意我以超級用戶身份登錄。見圖:

django add user from onetoonefield 任何關於如何做到這一點的幫助將不勝感激!

回答

0

行,所以我想通了,如何做到這一點,我在這裏加入的解決方案供參考:

覆蓋在Therapeut類的保存方法,像這樣:

class Therapeut(models.Model): 

    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    # some more fields here 

    # override save method to add staff status to connected user and add it to therapeutengroup 
    def save(self, *args, **kwargs): 

     userObj = self.user 

     userObj.is_staff = True 
     userObj.save() 

     therapGroup = Group.objects.get(name='therapeut') 
     therapGroup.user_set.add(userObj) 

     super(Therapeut, self).save(*args, **kwargs) 

但是,如果有人否則有更好或不同的解決方案,歡迎在此提出建議!