簡體   English   中英

Django中的自定義用戶模型?

[英]Custom user model in Django?

我知道如何制作自定義用戶模型,我的問題是關於樣式和最佳實踐。

Django中自定義用戶模型的后果是什么? 使用輔助一對一模型真的更好嗎?

例如,如果我有一個與User一對一的UserProfile模型,我應該在UserProfile之間還是在User之間創建friends關系(僅特定於我的應用程序)?

同樣,所有第3方軟件包都依賴於get_user_model() ,因此,如果我不使用自定義用戶模型,則您的所有關系都應該轉到User ,對嗎? 但是我仍然無法向User添加方法,因此,如果Userfriends關系,並且我想添加recent_friends方法,則應將此方法添加到UserProfile 這對我來說似乎有點矛盾。

如果有Django經驗的人能給出清晰的見解,我將感到非常高興。

我絕對建議您使用自定義用戶模型-即使您與配置文件一對一使用。 如果您已承諾使用默認用戶模型,則很難遷移到自定義用戶模型,並且幾乎總有一個要向該用戶模型添加至少一些自定義邏輯的地方。

然后,無論使用概要文件還是進一步擴展用戶模型,都應基於通常適用於數據庫結構的所有注意事項。 正確的™決定取決於您個人資料的確切詳細信息,只有您自己知道。

同樣,所有第3方軟件包都依賴於get_user_model(),因此,如果我不使用自定義用戶模型,則您的所有關系都應該歸用戶所有,對嗎? 但是我仍然無法向User添加方法,因此,如果User與朋友有關系,並且我想添加最近使用的方法,則應將此方法添加到UserProfile中。

過去我走過“一對一”的路線,最終我完全不喜歡我的應用程序的設計,在我看來,這迫使您遠離SOLID。 因此,如果我是您,則寧願繼承AbstractBaseUserAbstractUser

使用AbstractBaseUser ,僅向您提供User的核心實現,然后可以根據需要擴展模型。 根據您所使用的第三方軟件包的種類,您可能需要的不只是核心實現:如果是這種情況,只需擴展AbstractUser使您擴展User的完整實現。

暫無
暫無

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

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