2010-11-12 2 views
0

Привет, Есть ли способ сказать Django Evolution добавить новое поле в таблицу базы данных в определенной позиции, аналогично оператору AFTER (My) SQL? У меня есть таблица с некоторыми столбцами, и я хочу добавить new_column после столбца1. Использование SQL непосредственно я хотел бы сделать это:Django Evolution: Как добавить новое поле в определенную позицию?

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

Для Джанго Evolution это приводит к:

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

Однако, это добавит new_column к концу стола, там что-то я могу передать in для точек в приведенном выше заявлении, дающих больший контроль над порядком?

спасибо.

ответ

0

Django не зависит или не заботится о позиции столбца в базе данных. Я предполагаю, что Django Evolution работает одинаково.

Таким образом, вы не должны слишком сильно зависеть и заботиться о внутренних элементах базы данных, в конце концов, именно поэтому вы используете ORM, верно?

Если вы действительно должны сделать это, я предлагаю подклассов django_evolution.mutations.AddField и перезапись метод add_column интегрировать AFTER заявление в списке операторов SQL этот метод возвращает. Там могут быть лучшие места, это будет взлом.

+0

Существует множество случаев, когда вам очень нужна информация о базе данных под вашим ORM. –

+0

Но порядок столбцов в таблице? – stefanw

Смежные вопросы