Python 在社交应用程序Django中扩展用户模型或自定义管道
我正在用django 1.11(不使用Mongo)实现(不是不推荐的;依赖Python social auth的)。我的应用程序需要存储和处理用户的大量数据,而不是登录时从他们的社交媒体帐户获取的数据 当用户进行身份验证时,我不需要获取或收集任何额外的数据,但是他们在我的站点上执行的各种操作需要保存到他们的用户模型中。我想知道以下哪种方法是首选的(我在网上搜索了很多,但是找不到一个具体的解释来解释为什么使用一种方法和另一种方法):Python 在社交应用程序Django中扩展用户模型或自定义管道,python,django,django-models,python-social-auth,django-socialauth,Python,Django,Django Models,Python Social Auth,Django Socialauth,我正在用django 1.11(不使用Mongo)实现(不是不推荐的;依赖Python social auth的)。我的应用程序需要存储和处理用户的大量数据,而不是登录时从他们的社交媒体帐户获取的数据 当用户进行身份验证时,我不需要获取或收集任何额外的数据,但是他们在我的站点上执行的各种操作需要保存到他们的用户模型中。我想知道以下哪种方法是首选的(我在网上搜索了很多,但是找不到一个具体的解释来解释为什么使用一种方法和另一种方法): 在我的应用程序的models.py(称之为MyUser)中创建
- 在我的应用程序的models.py(称之为
)中创建我自己的用户模型,该模型不扩展任何特殊功能,然后在身份验证管道中添加一个函数,将社交应用程序django用户与MyUser
的相应实例相关联。保持MyUser
和AUTH\u USER\u MODEL
不变 或者SOCIAL\u AUTH\u USER\u MODEL
- 在我的应用程序的models.py和项目的settings.py集合
和AUTH_user_model
中创建我自己的用户模型,指向SOCIAL_AUTH_user_model
。保持管道不变。在本例中,我想知道是否有人可以澄清MyUser
及其管理器应该扩展什么,以及我需要在modules.py中导入什么(我很困惑,因为很多堆栈溢出帖子都是指这个模块的不推荐版本,我不断出错)。此外,在这种情况下,我应该同时设置MyUser
和AUTH\u USER\u MODEL
社会性的
,还是只设置其中一个AUTH\u USER\u MODEL
另一个细节:我希望能够访问用户数据库不仅从应用程序我目前正在建设,而且从其他应用程序(在同一Django项目),我将在未来建立。这会影响什么吗?因为我看到这有相当多的视图,所以我将发布我最终找到的解决方案
django
和social app django
(或任何其他社交身份验证模块)都使用默认的User
模型进行身份验证。虽然可以编辑此模型以添加自定义参数,但我不建议这样做。它不是很好的抽象或模块化。如果在配置模型时出错,不仅会破坏站点上的特定功能,还可能破坏身份验证本身
我能想到的唯一一种情况是,如果您需要进行影响身份验证流本身的更改(例如,添加您自己的自定义身份验证提供程序),则需要编辑默认用户模型本身。
创建名为UserProfile
的新模型更容易、更安全,它与User
对象具有所需的一对一关系。现在,您可以将User
对象视为身份验证部分,将UserProfile
对象视为内容/存储部分。您不必经常使用User
模型,而且UserProfile
模型对于身份验证来说并不重要。请注意,在此配置中,您不需要更改settings.py文件中的AUTH\u USER\u MODEL
或SOCIAL\u AUTH\u USER\u MODEL
字段
如果采用这种方法,您将需要在身份验证管道中添加一个自定义步骤,在该步骤中,您将创建一个新的
UserProfile
对象,并将其与当前登录的用户关联。您不认为可以从social\u django
模块扩展UserSocialAuth
?如何以兼容的方式实现这一点?