2

我需要使用以下方法在 djangocontrib.auth应用程序中的 Group 模型中添加几个字段:

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

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

有谁知道如何创建和加载这样的迁移?

在此先感谢您的帮助。

4

2 回答 2

3

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

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

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

于 2012-05-16T03:52:05.507 回答
0

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

于 2012-05-16T00:06:38.597 回答