【发布时间】:2014-01-03 23:38:34
【问题描述】:
随着 Django 1.5 和自定义用户模型的引入,AUTH_PROFILE_MODULE 已被弃用。在我现有的 Django 应用程序中,我使用了 User 模型,并且我还有一个带有 User 外键的 Profile 模型,并将有关用户的其他内容存储在配置文件中。当前使用AUTH_PROFILE_MODULE,并设置为“app.profile”。
所以很明显,我的代码往往会做很多user.get_profile(),现在需要去掉。
现在,我可以创建一个新的自定义用户模型(只需让我的配置文件模型扩展 User),但是在我目前拥有用户外键的所有其他地方也需要更改...所以这将是我的实时服务中的一次大迁移。
有什么方法 - 并且没有模型迁移 - 并且只能通过在某处创建/覆盖 get_profile() 函数与 my_user.userprofile_set.all()[0]) 之类的东西?
有没有人走上这条路并可以分享想法或经验?
如果我现在在哪里再做这项服务 - 显然不会走这条路,但有了一个半大型现场制作系统,我可以走捷径:-)
【问题讨论】:
-
这些是我最终完成的步骤; (i) 创建了一个 utils 方法:返回 user.profile_set.all()[0] (ii) 在我在模型中使用外键引用 User 的所有位置添加 - 还添加了一个属性 user_profile(self),它返回上面 self (iii) 上的 utils 方法最后添加了当前用户配置文件并使其在请求上下文下可用(允许我用 user_profile 替换 user.get_profile 模板中的所有用法(我已添加)。然后进行大量搜索和替换.get_profile 在代码中 - 但现在似乎可以工作。不是最漂亮的东西,但可以工作。
-
我想遵循这种方法,但我不太明白。您在哪里添加属性
user_profile?您如何使其在请求上下文中可用?
标签: python django deprecated user-profile