如何扩展/覆盖 UserManager

Posted

技术标签:

【中文标题】如何扩展/覆盖 UserManager【英文标题】:how to extend/override UserManager 【发布时间】:2014-01-29 02:15:22 【问题描述】:

我在 Django 1.6 上

在我的应用程序中,我想要一个用户对象和一个单独的配置文件对象。我想避免实现自定义 User 对象,而是只使用与具有我想要的所有其他字段/信息的模型的一对一关系。

每当我对用户对象进行查询时,90% 的时间我都希望检索此配置文件对象。我的想法是,最好的方法是修改默认 UserManager 的 get_queryset 方法,以始终通过“select_related”调用检索此相关对象。

有没有办法做到这一点?

搜索这是我能找到的关于该主题的唯一资源。Override Django User Manager to only return active users in queries 我需要这样做吗?我可以改为以某种方式使用基本用户对象吗?

提前致谢。

【问题讨论】:

90% 仍然不是 100%。仅在需要时使用 select_related,而不是默认使用 【参考方案1】:

从 Django 1.5 开始,您可以创建自己的 custom user model。这消除了user_profile 的需要。

【讨论】:

是的,我知道这一点。正如它在“模型设计注意事项”中的文档中提到的那样 - “在处理与自定义用户模型中的身份验证不直接相关的信息之前请仔细考虑......”我主要担心可能会干扰其他应用程序。这种担忧是没有根据的吗?

以上是关于如何扩展/覆盖 UserManager的主要内容,如果未能解决你的问题,请参考以下文章

如何扩展而不是覆盖 WPF 样式

如何在扩展组件上覆盖 className?

如何扩展/覆盖 UserManager

如何扩展/覆盖插件的控制器操作?

如何使水平元素扩展以覆盖可用空间?

如何在 Container 中垂直扩展 TextField 以覆盖 Flutter 中的所有可用空间