可能有些人会说这是一个反复出现的话题,但在阅读了很多文章后,对我来说似乎仍然很模糊。我的问题是关于使用和扩展用户模型的最佳方法,它保留了Django中可用的身份验证(和其他)机制。但是,我更喜欢描述我的设计:
对于第一部分,Django doc建议将User与OneToOne关系扩展到Profile。但是,要通过电子邮件替换用户名,他们建议创建一个从AbstractUser扩展的自定义用户,以及相关的UserManager。第二个要求就像做一个从用户到用户的一对多关系。因此,根据Django,这应该是最好的策略:创建一个全新的用户模型和一对多用户 - 用户添加区分主要用户和家庭成员的特定属性?或者使用配置文件扩展Django用户,然后使用一对多关系配置文件配置文件?哪个选项保留了Django用户身份验证和模型管理的最佳好处?
感谢您的任何评论,建议,示例。
答案 0 :(得分:2)
首先,如果您想将电子邮件用作用户名,请使用Django custom user
功能。它运作良好。
然后,请注意,这不是因为您创建了自己的用户,而是无法使用个人资料扩展它。
所以,一个好的解决方案可能是:
PatientProfile
类。这样,可以登录的患者将与User实例相关,并将此实例用于此目的。另一方面,无法登录的患者将与任何用户实例无关。
最后,使用OneToMany与PatientProfile建立关系是没有问题的。