【发布时间】:2015-01-28 19:41:26
【问题描述】:
可能你们中的一些人会说这是一个反复出现的话题,但是在阅读了很多文章之后,我觉得它仍然很模糊。我的问题是关于使用和扩展 User 模型的最佳方式,以保留 Django 中可用的身份验证(和其他)机制。不过,我更喜欢描述我的设计:
- 有些用户(患者)可以注册并提供基本信息(名字、姓氏、出生日期、性别、电子邮件、密码)。最好用电子邮件代替用户名。
- 当患者在应用程序中时,它可以注册一个新患者(想象一个家庭成员),但不需要电子邮件和密码,因为他们不会登录系统。
对于第一部分,Django 文档建议将具有 OneToOne 关系的 User 扩展到 Profile。然而,为了用电子邮件替换用户名,他们建议创建一个从 AbstractUser 扩展的自定义用户,以及关联的 UserManager。第二个要求就像从用户到用户建立一对多的关系。那么,根据 Django,最好的策略应该是:创建一个全新的用户模型和一对多的用户-用户添加一个特定的属性来区分主要用户和家庭成员?或使用配置文件扩展 Django 用户,然后使用一对多关系配置文件配置文件?哪个选项可以最大程度地保留 Django 用户身份验证和模型管理的好处?
感谢您的任何评论、建议、示例。
【问题讨论】:
-
只需按照电子邮件中的文档作为用户名。如果家庭成员不登录,则它是匿名用户,根本不是真实用户。只需为他们创建一个单独的模型。
标签: python django database-design design-principles