Django:从oneToOneField

时间:2017-06-15 13:34:52

标签: django django-models

我有一个模型,以便用一些额外的字段扩展用户模型。 "治疗" model有一个用户字段,它是从django.contrib.auth.models连接到User的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 Admin,我可以从可用的用户中选择或添加一个新用户。

点击后我添加一个新用户(绿色+用户下拉列表旁边),我希望新用户拥有员工状态并将其添加到用户组" therapeuten",以便管理这个新用户的权限。

我没有看到如何(自动)实现这一点,我也没有选择在弹出窗口中设置人员状态和用户组。注意我以超级用户身份登录。见图:

django add user from onetoonefield 如何做任何帮助将非常感激!

1 个答案:

答案 0 :(得分:0)

好的,所以我想出了怎么做,我在这里添加解决方案供参考:

覆盖Therapeut类上的save方法,如下所示:

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)

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