2015-04-12 99 views
0

我知道如何制作自定义用户模型,我的问题是关于样式和最佳实践。Django中的自定义用户模型?

Django中定制用户模型的后果是什么?使用辅助一对一模型真的更好吗?

再举例来说,如果我有一个UserProfile模型是一个对一个User,我应该创建friendsUserProfileUser之间的关系(这只是具体到我的应用程序)?

另外所有的第三方软件包都依赖于get_user_model(),所以看起来好像我不使用自定义用户模型,所有关系都应该转到User,对不对?但是我仍然不能将方法添加到User,所以如果Userfriends有关系,并且我想要添加recent_friends方法,我应该将此方法添加到UserProfile。这对我来说看起来有点不一致。

如果有人在Django上有经验可以给出清晰的见解,我会很高兴。

回答

1

另外所有的第三方软件包都依赖于get_user_model(),所以看起来像我不使用自定义用户模型,所有的关系都应该去用户,对吧?但是我仍然不能向User添加方法,所以如果User有朋友关系,并且我想添加recent_friends方法,我应该将此方法添加到UserProfile。

我在过去一直走下“一对一”的路线,结果我根本不喜欢我的应用程序的设计,在我看来,它强迫你远离SOLID。所以如果我是你,我宁愿将其分类为AbstractBaseUserAbstractUser

随着AbstractBaseUser您只提供User的核心实现,然后您可以根据您的要求扩展模型。 根据您使用的是哪种第三方软件包,您可能需要的不仅仅是核心实现:如果是这种情况,只需扩展AbstractUser即可扩展User的完整实现。

1

我肯定会推荐使用自定义用户模型 - 即使您使用与配置文件一对一。如果您已经承诺使用默认的用户模型,那么迁移到自定义用户模型非常困难,并且几乎总是有一点要将至少一些自定义逻辑添加到用户模型中。

无论您使用配置文件还是进一步扩展用户模型,都应该基于通常适用于您的数据库结构的所有注意事项。正确的决定取决于你的个人资料的确切细节,只有你知道。

相关问题