2012-08-02 25 views
0

我添加了一個新的領域,以我的模型。從Django的manage.py如何打印遷移(alter table語句)。在下面的is_tag是我的新領域的Django得到ALTER TABLE命令的模塊

當我sqlall我會得到以下output.How可我得到的ALTER TABLE命令

[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命令給我的ALTER語句.. – Rajeev 2012-08-04 16:06:07

+0

這不可能如那裏沒有邏輯來生成所需的ALTER語句。您在'sqlall'中看到的ALTER語句只是獲取表設置所需的初始SQL。從文檔中,sqlall:'爲給定的應用程序名稱打印CREATE TABLE和初始數據SQL語句.' – 2012-08-04 16:08:52