在django中为auth app创建迁移

时间:2012-05-15 22:59:07

标签: python django migration django-south

我需要在django contrib.auth应用中使用以下几个字段添加一些字段:

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

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

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

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

Django并没有让修改标准模型变得特别容易。我不建议您使用子类Group,因为获取引用新模型的内置功能非常烦人。

这里通常要做的是创建一个GroupProfile模型,其中Group作为唯一的外键。它可能不是很优雅,但它不会产生与分配Django源代码相关的巨大维护费用。

另外:如果您无法在服务器上修改Django代码,那么您将无法使用原始SQL hackery或巧妙的迁移来执行此操作。 South不会成为问题 - 问题是Django ORM会注意到SQL表中存在未在代码中指定的字段,这将导致它抛出异常。 / p>

答案 1 :(得分:0)

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