是django的新手,我想在不删除数据库中的数据的情况下向表中添加一列。命令
python manage.py reset polls
删除整个数据库中的数据
答案 0 :(得分:6)
如果您只想添加新模型,可以使用manage.py syncdb
。不幸的是,如果您更改了模型,则默认的Django命令无法为您执行此操作。
为了使用现有数据更改模型,您将不得不告诉Django和数据库如何将数据从旧表迁移到新表。执行此操作的工具称为South。关于它的一个很好的入门教程可以在这里找到:
答案 1 :(得分:3)
我做了这样的改变:
使用新列更改模型。
class Book(models.Model):
title = models.CharField(maxlength=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
newColumn = models.DateField()
显示新的create table命令: python manage.py sqlall
blah blah
CREATE TABLE "books_book" (
"id" serial NOT NULL PRIMARY KEY,
"title" varchar(100) NOT NULL,
"publisher_id" integer NOT NULL REFERENCES "books_publisher" ("id"),
"newColumn" date NOT NULL
);
我手动更改数据库中的表:
mysql -u xxx -p dbxxx
alter table ttttt add column "newColumn" date NULL; (*1)
(* 1)应该由Null或您必须通知默认值
如果需要,请记住创建索引和其他约束。
多数人。
答案 2 :(得分:0)
除了danihp回答,如果你有大项目,你可以使用
python manage.py sql <app_name>
所以在你的情况下:
python manage.py sql polls
这样你只得到“polls”sql子句。