2017-06-15 66 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) 

但是,如果有人否则有更好或不同的解决方案,欢迎在此提出建议!