[英]Custom user model in Django?
我知道如何制作自定義用戶模型,我的問題是關於樣式和最佳實踐。
Django中自定義用戶模型的后果是什么? 使用輔助一對一模型真的更好嗎?
例如,如果我有一個與User
一對一的UserProfile
模型,我應該在UserProfile
之間還是在User
之間創建friends
關系(僅特定於我的應用程序)?
同樣,所有第3方軟件包都依賴於get_user_model()
,因此,如果我不使用自定義用戶模型,則您的所有關系都應該轉到User
,對嗎? 但是我仍然無法向User
添加方法,因此,如果User
與friends
關系,並且我想添加recent_friends
方法,則應將此方法添加到UserProfile
。 這對我來說似乎有點矛盾。
如果有Django經驗的人能給出清晰的見解,我將感到非常高興。
我絕對建議您使用自定義用戶模型-即使您與配置文件一對一使用。 如果您已承諾使用默認用戶模型,則很難遷移到自定義用戶模型,並且幾乎總有一個要向該用戶模型添加至少一些自定義邏輯的地方。
然后,無論使用概要文件還是進一步擴展用戶模型,都應基於通常適用於數據庫結構的所有注意事項。 正確的™決定取決於您個人資料的確切詳細信息,只有您自己知道。
同樣,所有第3方軟件包都依賴於get_user_model(),因此,如果我不使用自定義用戶模型,則您的所有關系都應該歸用戶所有,對嗎? 但是我仍然無法向User添加方法,因此,如果User與朋友有關系,並且我想添加最近使用的方法,則應將此方法添加到UserProfile中。
過去我走過“一對一”的路線,最終我完全不喜歡我的應用程序的設計,在我看來,這迫使您遠離SOLID。 因此,如果我是您,則寧願繼承AbstractBaseUser
或AbstractUser
。
使用AbstractBaseUser
,僅向您提供User
的核心實現,然后可以根據需要擴展模型。 根據您所使用的第三方軟件包的種類,您可能需要的不只是核心實現:如果是這種情況,只需擴展AbstractUser
使您擴展User
的完整實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.