嘿 有没有办法告诉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 中,是否有什么我可以传入上述语句中的点,从而更好地控制订单?
谢谢。
答案 0 :(得分:0)
Django不依赖或关心数据库中的列位置。我的猜测是Django Evolution以同样的方式工作。
所以你不应该过分依赖或关注数据库内部,最终这就是你使用ORM的原因吧?
如果你真的必须这样做,我建议继承django_evolution.mutations.AddField
并覆盖add_column
方法,将AFTER
语句集成到此方法返回的SQL语句列表中。可能有更好的地方,这将是一个黑客。