1

有没有办法告诉 Django Evolution 在特定位置向数据库表添加一个新字段,类似于 (My)SQL 的 AFTER 语句?我有一个包含一些列的表,我想在 column1 之后添加 new_column。直接使用 SQL 我会这样做:

ALTER TABLE  `db_table` ADD  `new_column` DATETIME NULL DEFAULT NULL AFTER  `column1`

对于 Django Evolution,这转化为:

MUTATIONS = [
    AddField('DbTable', 'new_column', models.DateTimeField, null=True, ...)
]

但是,这会将 new_column 添加到表的末尾,我可以为上述语句中的点传递一些东西来更好地控制顺序吗?

4

1 回答 1

1

Django 不依赖也不关心数据库中的列位置。我的猜测是 Django Evolution 的工作方式相同。

所以你也不应该依赖或太关心数据库内部,这就是你使用 ORM 的原因,对吧?

如果您真的必须这样做,我建议继承django_evolution.mutations.AddField并覆盖该add_column方法以将该语句集成到AFTER该方法返回的 SQL 语句列表中。可能有更好的地方,这将是一个黑客。

于 2010-11-12T15:43:36.867 回答