【问题标题】:Django 1.5 and new User model : what about third party apps?Django 1.5 和新用户模型:第三方应用程序呢?
【发布时间】:2013-02-21 15:38:51
【问题描述】:

我正在开发站点上进行一些测试,目前使用 Django 1.4。 大多数 Django 用户都知道 Django 1.5 为用户模型带来了更大的灵活性。

我正在进行的项目在auth.User 模型上使用猴子补丁,并且效果很好。这增加了我每次使用的有用方法。

为了兼容性,我没有在 User 模型上添加任何数据库字段,我的代码只涉及到这个:

User.__bases__ += (UserPlus,)
User.__unicode__ = UserPlus.__unicode__
UserPlusManager().contribute_to_class(User, 'objects')

UserPlusManagerUserManager 的子类。

现在,假设我想切换到新的用户模型。我在INSTALLED_APPS 中已经有很多应用程序,其中一些在未维护的存储库中,并且模型的字段与 auth.User 相关联。 对于这种配置,我没有看到任何明显的策略。

那么,考虑到这一点,升级到 Django 1.5 真的是可取的吗?如果是这样,我应该采取什么步骤?

【问题讨论】:

  • imo,monkey-patching auth.User 是一种非常简单的方法,可以让您在前向兼容性方面陷入困境。如果你想升级到 1.5,你很可能会重新设计你的补丁。
  • 实际上,我已经猴子修补了 auth.User 模型,但没有添加任何数据库字段以实现兼容性。我已经更改了一些方法,并将默认管理器替换为兼容的管理器。我将用这条信息补充我的第一篇文章。
  • 我不确定您的问题是否有“好的”答案,因为这完全是基于任何代码利用您的猴子补丁用户的主观判断。
  • 我总是可以重构我当前的代码,但真正的问题是如何处理 Github 和 Bitbucket 上随处可见的现有第三方应用程序? (例如 django-activity-stream)我认为他们会打破新模型。
  • 如果 Django 改变了它们的结构,这些应用程序必须做出响应。如果该应用程序与 1.5 不兼容,那几乎可以回答您的问题。

标签: django django-models


【解决方案1】:

如果 Django 中的结构发生变化,任何利用该结构的第三方应用程序都必须做出相应的反应。如果您的项目依赖于不兼容 1.5 的第三方应用,您应该等到它们兼容后再升级您的项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多