Django Evolution:如何在特定位置添加新字段?

时间:2010-11-12 15:35:55

标签: python django django-models django-evolution

嘿 有没有办法告诉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添加到表的 end 中,是否有什么我可以传入上述语句中的点,从而更好地控制订单?

谢谢。

1 个答案:

答案 0 :(得分:0)

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

所以你不应该过分依赖或关注数据库内部,最终这就是你使用ORM的原因吧?

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