2012-08-02 2 views
0

я добавил новое поле в мою модель .С Джанго manage.py, как я могу напечатать миграцию (изменить таблицу заявление) .В следующего is_tag моего новое полеДжанго получить изменять команды таблицы для модуля

Когда я делаю sqlall я получаю следующее output.How я могу получить альтер таблица команд

[email protected]:/opt/labs/labs_site# python manage.py sqlall content 
BEGIN; 
CREATE TABLE `content_content` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, 
`name` varchar(255) NOT NULL, 
`uploaded_by_id` integer NOT NULL, 
`is_local` integer NOT NULL, 
`access` integer NOT NULL, 
`fq_name` varchar(255) NOT NULL, 
`description` longtext NOT NULL, 
`is_tag` bool NOT NULL, 
`timestamp` datetime NOT NULL 
) 
; 
    ALTER TABLE `content_content` ADD CONSTRAINT `uploaded_by_id_refs_id_4f9cfefd` FOREIGN KEY (`uploaded_by_id`) REFERENCES `users_userprofile` (`id`); 
    CREATE INDEX `content_content_1bc5ce19` ON `content_content` (`uploaded_by_id`); 
COMMIT; 

ответ

2

syncdb will never alter tables или в Документах собственных словах:

SyncDB только создавать таблицы для моделей, которые не имеют еще установлен , Он никогда не выдает утверждения ALTER TABLE, чтобы соответствовать изменениям, внесенным в класс модели после установки. Изменения в классах моделей и схемах базы данных часто связаны с некоторой формой двусмысленности, и в этих случаях Django должен был догадываться о правильных изменениях. Существует риск того, что критические данные будут потеряны в процессе.

Для управления миграцией, вы должны использовать South

+0

Но я никогда не говорил, что я хочу использовать syncdb.I, чтобы команда питона manage.py, чтобы дать мне альтер заявление .. – Rajeev

+0

Это не может как нет никакой логики, чтобы генерировать требуемый статус ALTER. Утверждение ALTER, которое вы видите в 'sqlall', - это только начальный sql, необходимый для настройки таблиц. В документах sqlall: 'Распечатывает CREATE TABLE и SQL-запросы исходных данных для указанных имен приложений .' –

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