【发布时间】:2016-03-16 17:57:24
【问题描述】:
一个很棒的问候社区
我的问题与 Django 中管理用户和模式用户的类型有关,一开始我向你道歉,以防我的问题太“新手”或毫无意义,我开始与我相关使用 Django 用户模式及其在项目中的不同工作可能性。
我有以下情况。
我正在构建一个应用程序,其中我将拥有三种不同的用户类型:
- 医疗
- 病人
- 物理治疗师
我正在使用默认的 Django 身份验证方案 (django.contrib.auth)。
最初,我确实认为在这个实体方案中,用户表是 auth_user 表,Django 保存创建的用户:
我在 User 表中有 is_patient、is_medical 和 is_physiotherapist 字段,例如布尔属性。
就像一个特定的细节,我知道在 Django 默认模型中,用户是不可能修改或添加属性或字段的。
这是我无法在 User 表中添加 is_patient、is_medical 和 is_physiotherapist 布尔字段的一个重要而有力的原因。
一个经典的建议是使用 Userprofile 表扩展用户模型,在该表中我通过 OneToOne 关系向用户模型添加字段或属性。基本示例如下:
通过这种方式,我在 Django 中的用户可以拥有现场照片并在给定时刻上传一张...
利用之前的优势,
以下架构可以适合或替代管理用户角色(patient、medical 和 physiotherapist 用户类型)?
我将有以下关系:
用户医疗和用户患者
用户物理治疗师和用户患者
它们与其他表之间也是如此......
采用这种方法,这些关系不会受到影响吗?
不同的用户将被保存在 Users 和 UserProfile 表之间。 这是可扩展性意义上的好习惯吗?我的表可能崩溃或我的数据库?
此外,我还看到了其他替代方案,例如:
- 角色表/模型
我将有一个独立或独立的角色表/模型,这可以与 Django 用户模型相关(例如,一个用户可以有多个角色) 当我想存储特定角色的专有信息时,这种方法很有用?
我忽略或不知道让我工作的粒度等级。在我看到的单一方式中,权限和授权系统让我可以使用创建、编辑和删除操作....
在这里,我可以看到组创建吗? 例如一个医疗组并为其分配权限并将此权限链接到组成该组的用户?这是另一个不错的选择吗? 这个选项似乎更单一,虽然我不知道用户是否可以根据具有...的组权限进行一些操作我不知道这种想法是否正确/正确
- AUTH_USER_MODEL Creating a Custom User model
我对患者、医疗和物理治疗师用户的要求,需要构建自定义用户模型吗?
【问题讨论】:
-
嘿,我的回答有什么遗漏或不满意吗? :) 很高兴能得到一些反馈!
-
@Ire,您的回复对我非常有用。在其他一些方向上,我确实选择自定义我的用户模型并将其与 OneToOne 关系中的 Medic、Patient、Physio 模型查看这些数字cldup.com/lqB3367kAp.png - cldup.com/jxVsgfneGb.png) 当我在用户中添加属性时,我已经自定义了我的管理员表格出现在那里。
-
@Ire,当您说:“拥有自定义模型和组将是多余的并且使您的应用程序更难维护时,我有点不明白。”事实上,我还没有尝试过授权过程,但我同意你创建组并请求特定用户(患者、医疗或理疗师)是否存在并属于一个组......
-
为什么最好像下面显示的那样明确地执行它“(这样您访问该对象中不存在的属性的可能性较小!)”而不是使用 AbstractUser 子类化 User 模型?
标签: python django django-models user-roles django-users