Python Django最佳用户模型设计
也许你们中的一些人会说这是一个反复出现的话题,但在阅读了许多文章之后,我仍然觉得它很模糊。我的问题是关于使用和扩展用户模型的最佳方式,以保留Django中可用的身份验证(和其他)机制。然而,我更喜欢描述我的设计:Python Django最佳用户模型设计,python,django,database-design,design-principles,Python,Django,Database Design,Design Principles,也许你们中的一些人会说这是一个反复出现的话题,但在阅读了许多文章之后,我仍然觉得它很模糊。我的问题是关于使用和扩展用户模型的最佳方式,以保留Django中可用的身份验证(和其他)机制。然而,我更喜欢描述我的设计: 有些用户(患者)可以注册,提供基本信息(姓名、姓氏、出生日期、性别、电子邮件、密码)。最好用电子邮件代替用户名 当患者在应用程序中时,它可以注册一个新患者(假设是家庭成员),但不需要电子邮件和密码,因为他们不会登录系统 对于第一部分,Django doc建议将用户与一个概要文件的O
- 有些用户(患者)可以注册,提供基本信息(姓名、姓氏、出生日期、性别、电子邮件、密码)。最好用电子邮件代替用户名
- 当患者在应用程序中时,它可以注册一个新患者(假设是家庭成员),但不需要电子邮件和密码,因为他们不会登录系统
感谢您的评论、建议和示例。首先,如果您想使用电子邮件作为用户名,请使用
Django自定义用户
功能。它工作得很好。
然后,请注意,并不是因为您创建了自己的用户,所以无法使用概要文件对其进行扩展
因此,一个好的解决方案可能是:
- 创建Django自定义用户,而不尝试向其添加特定字段(这里唯一的目的是使用电子邮件而不是用户名来登录)
- 创建一个与用户类具有一对一关系(blank=True)的
类PatientProfile
最后,使用与PatientProfile的OneToMany关系来做你想做的事情是没有问题的。只需按照电子邮件上的文档作为用户名即可。如果一个家庭成员不登录,那就是一个匿名用户,而不是真正的用户。为他们创建一个单独的模型。我有一个相关的问题。我认为PatientProfile类是一个不错的选择,不过,您对此有何考虑?谢谢