在Django中使用用户角色

bga*_*ial 16 python django user-roles django-users multiple-users

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

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

1用户有多个用户配置文件?我不知道

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

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

我对如何解决这个问题感到困惑

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

如果有人可以指导我,我将非常感谢最诚挚的问候

spo*_*rad 17

您可能可以使用django的内置权限

这可能比你需要的更多.一个简单的解决方案就是UserProfile模型,其中包含一个带有OneToOneField的角色字段给您的用户:

class UserProfile(models.Model):
  user = models.OneToOneField(User, related_name="profile")
  role = models.CharField()
Run Code Online (Sandbox Code Playgroud)

设置角色并使用视图中的角色进行检查:

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

if user.profile.role == "physician":
  #do physician case here
Run Code Online (Sandbox Code Playgroud)

  • 如果您的角色系统更复杂,那么您可以继续将角色作为自己的模型.如果一个人可以拥有多个角色,或者您需要存储有关人员角色的信息,这将更有效.例如,某人是某人的管理员,但除了声明他们是管理员之外,您还要存储一组关于其特定管理员角色的字段,这些字段属于自己的表. (5认同)