我需要在django contrib.auth
应用中使用以下几个字段添加一些字段:
field_name = models.CharField(...)
field_name.contribute_to_class(Group, 'field_name')
我的问题是在使用South创建迁移时,因为它们是在auth应用程序内的“migrations”目录中创建的,并且由于系统已经在生产中,因此我不允许更改当前的django安装。服务器,以便迁移auth
。
有谁知道如何创建和加载此类迁移?
提前感谢您的帮助。
答案 0 :(得分:3)
Django并没有让修改标准模型变得特别容易。我不建议您使用子类Group
,因为获取引用新模型的内置功能非常烦人。
这里通常要做的是创建一个GroupProfile
模型,其中Group
作为唯一的外键。它可能不是很优雅,但它不会产生与分配Django源代码相关的巨大维护费用。
另外:如果您无法在服务器上修改Django代码,那么您将无法使用原始SQL hackery或巧妙的迁移来执行此操作。 South不会成为问题 - 问题是Django ORM会注意到SQL表中存在未在代码中指定的字段,这将导致它抛出异常。 / p>
答案 1 :(得分:0)
由于您使用hack来修补模型,我认为您应该手动编写迁移。尝试复制另一个迁移并首先更改add_column
和models
,如果失败 - 总会有一个名为“raw sql”的选项:)