Python 在Django中使用用户角色
我有一些问题 在一个项目中,我需要与三种(可能更多)类型的用户合作,他们有不同的角色: 医师 病人 管理员 我一直在考虑使用Django模型用户,并将其扩展为创建一个userprofile模型。。。 但是我忽略了如何管理不同的角色,因为userprofile模型将包含用户模型的字段,尽管我不知道如何处理角色主题 1用户是否有多个用户配置文件?我不知道 或者,我将创建一个角色模型/表,在其中指定角色类型并创建与用户模型的关系。这是一个很好的可能性 另一种可能性(作为下面的评论)是检查Django权限系统,在该系统中我可以创建用户组,并为这些组分配权限,尽管这里我只能编辑、创建和删除模型,真的吗 我对如何解决这个问题有些困惑 搜索时我找到了这个应用程序。 如果有人能告诉我这件事,我将不胜感激Python 在Django中使用用户角色,python,django,django-users,user-roles,multiple-users,Python,Django,Django Users,User Roles,Multiple Users,我有一些问题 在一个项目中,我需要与三种(可能更多)类型的用户合作,他们有不同的角色: 医师 病人 管理员 我一直在考虑使用Django模型用户,并将其扩展为创建一个userprofile模型。。。 但是我忽略了如何管理不同的角色,因为userprofile模型将包含用户模型的字段,尽管我不知道如何处理角色主题 1用户是否有多个用户配置文件?我不知道 或者,我将创建一个角色模型/表,在其中指定角色类型并创建与用户模型的关系。这是一个很好的可能性 另一种可能性(作为下面的评论)是检查Django权
致以最诚挚的问候您可能会使用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
看这里,我有一个简单的解决方案给你 如果我的假设是正确的,那么将会有一个管理员为应用程序创建一个用户,对吗 所以对于管理员来说,通过在数据库中提供选择使其变得简单,这就是解决方案。。管理员将从下拉列表中选择角色,然后完成您的工作 您的用户有一个模型,所以在用户模型中添加如下字段 在这里,我给你一个示例代码
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
希望这将使您的工作……Hi@spondrad我一直在探索,并且,用户配置文件模型通常用于向用户模型添加额外信息或额外属性,而无需修改用户模型。。。例如,向用户添加化身图片。。。在这种思想下,如果我们谈论模型或数据结构的定义,UserProfile与UserRole是不同的。你同意吗?我认为我可以创建一个用户角色模型,我可以说一个用户有许多用户角色。。。例如,另一种选择是研究Django中的权限系统(您在上面提到过我),我可以看到创建组、分配权限或权限并将它们分配给用户的可能性。每个小组都可以扮演一个角色?这是可能的。名称“UserProfile”是任意的,该表表示您希望与用户关联的任何信息,无论是个人资料图片、生日、角色等等。如果您的角色系统更复杂,那么您可以将角色作为自己的模型。如果一个人可以有多个角色,或者您需要存储关于一个人角色的信息,那么这种方法会更好。例如,假设某人是某事物的管理员,但除了声明他们是管理员之外,您还希望存储一组关于其特定管理员角色的字段,为此,您可能需要创建一个新的自定义表单,该表单继承自UserCreationForm,并将您想要的字段添加到表单中。我是在我的一个应用程序中这样做的,下面是另一个stackoverflow问题示例。可以在视图中访问添加到表单的字段。django-user-roles是4年前完成的,未更新。它看起来像是为Django 1.3制作的。我不建议你用它,这是真的。我目前正在考虑其他选项,其中包括模型用户自定义。谢谢你的澄清,我很高兴!我也会考虑这一点: