我在我的模型中添加了一个新字段。从django manage.py我如何打印迁移(alter table statement)。在下面的is_tag是我的新字段
当我做sqlall时,我得到以下输出。如何获得alter table命令
root@rajeev-laptop:/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;
答案 0 :(得分:2)
syncdb
will never alter tables,或在文档中自己的话:
syncdb仅为尚未安装的模型创建表。它永远不会发出ALTER TABLE语句来匹配安装后对模型类所做的更改。对模型类和数据库模式的更改通常涉及某种形式的歧义,在这些情况下,Django必须猜测要进行的正确更改。存在关键数据在此过程中丢失的风险。
要管理迁移,您应该使用South