【问题标题】:Django: Create staff user from oneToOneFieldDjango:从 oneToOneField 创建员工用户
【发布时间】:2017-06-15 13:34:52
【问题描述】:

我有一个模型,以便用一些额外的字段来扩展用户模型。 “therapeut”模型有一个用户字段,它是一个从 django.contrib.auth.models 连接到用户的 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 django-models


    【解决方案1】:

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

    像这样覆盖 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)
    

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

    【讨论】:

      猜你喜欢
      • 2020-07-15
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 2021-12-24
      • 2019-03-26
      相关资源
      最近更新 更多