24

我有一些问题在一个项目中,我需要与三种(可能更多)类型的用户一起工作,其中有不同的角色:医师患者管理员

我一直在考虑使用 Django Model Users 并扩展它来创建一个 userprofile 模型......但我忽略了如何管理不同的角色,因为 userprofile 模型将具有用户模型的字段,虽然我不知道如何解决角色主题。

1 用户有很多userprofiles 可能是?我不知道

或者我应该创建一个角色模型/表,在其中指定角色类型并创建与用户模型的关系。这是一个很好的可能性。

另一种可能性(作为下面的评论)是检查 Django 权限系统,我可以在其中创建用户组,并为这些组分配权限,尽管在这里我只能编辑、创建和删除模型吗?

我对如何解决这个问题有些困惑

搜索我找到了这个应用程序。 https://github.com/dabapps/django-user-roles

如果有人可以指导我,我将不胜感激 最好的问候

4

2 回答 2

26

你可能可以让它与 django 的内置权限一起使用

不过,这可能超出了您的需要。一个简单的解决方案就是一个 UserProfile 模型,它的角色字段带有 OneToOneField 给您的用户:

class UserProfile(models.Model):
  user = models.OneToOneField(User, related_name="profile")
  role = models.CharField()

设置角色并检查视图中的角色:

user.profile.role = "physician"
user.profile.save()

if user.profile.role == "physician":
  #do physician case here
于 2015-10-30T22:13:35.290 回答
0

看到这里我有一个简单的解决方案给你!

如果我的假设是正确的,那么会有一个管理员为应用程序创建一个用户,对吗?

因此,对于管理员来说,通过在数据库中提供选择来简化操作,这就是解决方案.. 管理员将从下拉列表中选择角色,然后您的工作就完成了..

你有你的用户模型,所以像这样在用户模型中添加这些字段。

这里我给你示例代码


class CreateUser(models.Model):
    ROLES = (

        ('Patient', 'Patient'),
        ('Doctor', 'Doctor'),
        ('Physician', 'Physician'),

    )

    name= models.CharField(max_length=100, null=True)
    last_name= models.CharField(max_length=100, null=True)
    roles = models.CharField(max_length=50, choices = ROLES, null=True)
    date_joined = models.DateField(auto_now_add=True)

    def __str__(self):
        return self.name

希望这会让你的工作......

于 2020-07-29T13:27:38.093 回答