1

(My)SQL の AFTER ステートメントと同様に、Django Evolution にデータベース テーブルの特定の位置に新しいフィールドを追加するように指示する方法はありますか? いくつかの列を持つテーブルがあり、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して上書きし、このメソッドが返す SQL ステートメントのリストにステートメントadd_columnを統合することをお勧めします。AFTERより良い場所があるかもしれませんが、これはハックです。

于 2010-11-12T15:43:36.867 に答える