(转)Django ====> 实战学习篇七 Model类的修改
- depot这个应用,根据最初的需求我们在model中写了多个字段,买方需要一个目录页面,可以浏览货物,这时候我们需要一个上架时间,在这个时间之后的产品买方才能看到,而且买方看到的物品一定是最新的。
- 这个时候我们注意到,为了这个新的需求我们需要对model类进行调整,增加一个新的属性字段date_available来满足需求,像开发新的功能一样,我们需要从修改model开始。
修改model很容易,我们只是需要在models.py中加入:
class Product(models.Model): .... date_available = DateField() ....
- 但要知道我们只是对model模型进行了修改,还需要对数据库表进行修改,这个时候python manage.py syncdb 并不能起作用,syncdb只能创建还没有建立的表,它并不对数据模型的修改进行同步,也不处理数据模型的删除;有的时候我们需要增加,修改,删除一个数据模型,需要手动的在数据库里进行相应的修改,在开发环境里可以drop掉相应的表,然后syncdb。但是对于发布环境却没有作用,我们最好这样做:
用下列命令产见看新creat的table中的内容: python manage.py sqlall depotapp BEGIN; CREATE TABLE "depotapp_product" ( "id" integer NOT NULL PRIMARY KEY, "title" varchar(30) NOT NULL UNIQUE, "description" text NOT NULL, "image_url" varchar(200) NOT NULL, "price" decimal NOT NULL, "date_available" date NOT NULL ) ; COMMIT; 使用django提供dbshell工具进行增加字段: python manage.py dbshell ... sqlite>begin; sqlite>alter table depotapp_product add column date_available date not null default 0; sqlite>commit;
- 验证数据库:
python manage.py shell ... >>from depotapp.models import Product >>Product.objects.all()
没有发生异常的话,就可以了。
以上是增加属性的步骤,还有其他的选项:
drop table -----删除模型 drop column ----删除字段 drop table ----删除多对对关联(自动生成的关联)???
直接按照上边步骤进行修改就行了。
“某度”空间 http://hi.baidu.com/new/wenjiashe521
cnblogs空间 http://www.cnblogs.com/wenjiashe521/