簡體   English   中英

Django最佳用戶模型設計

[英]Django best user model design

可能有些人會說這是一個反復出現的話題,但在閱讀了很多文章后,對我來說似乎仍然很模糊。 我的問題是關於使用和擴展用戶模型的最佳方法,它保留了Django中可用的身份驗證(和其他)機制。 但是,我更喜歡描述我的設計:

  • 有用戶(患者)可以注冊提供基本信息(名字,姓氏,出生日期,性別,電子郵件,密碼)。 優選地,電子郵件應該替換用戶名。
  • 當患者在應用程序中時,它可以注冊新患者(想象一下該家庭成員),但不需要電子郵件和密碼,因為他們不會登錄系統。

對於第一部分,Django doc建議將User與OneToOne關系擴展到Profile。 但是,要通過電子郵件替換用戶名,他們建議創建一個從AbstractUser擴展的自定義用戶,以及相關的UserManager。 第二個要求就像做一個從用戶到用戶的一對多關系。 因此,根據Django,這應該是最好的策略:創建一個全新的用戶模型和一對多用戶 - 用戶添加區分主要用戶和家庭成員的特定屬性? 或者使用配置文件擴展Django用戶,然后使用一對多關系配置文件配置文件? 哪個選項保留了Django用戶身份驗證和模型管理的最佳優勢?

感謝您的任何評論,建議和示例。

首先,如果您想使用電子郵件作為用戶名,請使用Django custom user功能。 它運作良好。 然后,請注意,這不是因為您創建了自己的用戶,而是無法使用配置文件擴展它。

所以,一個好的解決方案可能是:

  • 創建Django自定義用戶而不嘗試向其添加特定字段(這里唯一的目的是使用電子郵件來記錄而不是用戶名)。
  • 使用PatientProfile類創建一對一關系(空白= True)的PatientProfile類。

這樣,可以登錄的患者將與用戶實例相關,並將此實例用於此目的。 另一方面,無法登錄的患者與任何用戶實例無關。

最后,將OneToMany與PatientProfile的關系用於您想要做的事情是沒有問題的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM