Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中使用用户角色_Python_Django_Django Users_User Roles_Multiple Users - Fatal编程技术网

Python 在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模型。。。 但是我忽略了如何管理不同的角色,因为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制作的。我不建议你用它,这是真的。我目前正在考虑其他选项,其中包括模型用户自定义。谢谢你的澄清,我很高兴!我也会考虑这一点: