【问题标题】:Creating migrations for auth app in django在 django 中为身份验证应用程序创建迁移
【发布时间】:2012-05-23 12:14:45
【问题描述】:

我需要在 django contrib.auth 应用程序中的 Group 模型中添加几个字段:

field_name = models.CharField(...)
field_name.contribute_to_class(Group, 'field_name')

我的问题是在使用 South 创建迁移时,因为它们是在 auth 应用程序内的“迁移”目录中创建的,并且由于系统已经在生产中,所以我不允许更改当前 django 安装服务器以迁移auth

有谁知道如何创建和加载此类迁移?

提前感谢您的帮助。

【问题讨论】:

    标签: python django migration django-south


    【解决方案1】:

    Django 不会让修改标准模型变得特别容易。我不建议您对Group 进行子类化,因为使用内置功能来引用新模型非常烦人。

    这里通常要做的是创建一个GroupProfile 模型,它有一个Group 作为唯一的外键。它可能并不优雅,但不会产生分叉 Django 源代码所带来的巨大维护开销。

    另外:如果您无法修改服务器上的 Django 代码,那么您将无法使用原始 SQL 黑客技术或巧妙的迁移来做到这一点。 South 不会是问题——问题是 Django ORM 会注意到 SQL 表中存在未在代码中指定的字段,这将导致它抛出异常。

    【讨论】:

      【解决方案2】:

      由于您使用 hack 来修补模型,我认为您应该手动编写迁移。尝试复制另一个迁移并首先更改 add_columnmodels,如果失败 - 总是有一个名为“raw sql”的选项:)

      【讨论】:

        猜你喜欢
        • 2011-04-27
        • 2017-02-19
        • 1970-01-01
        • 2015-10-01
        • 1970-01-01
        • 2021-09-27
        • 2017-03-18
        • 2011-04-11
        • 2016-01-27
        相关资源
        最近更新 更多