django1.7是django一个具有里程碑性质的版本.

我们先来看下官方的介绍: > Django 1.7 is shaping up to be the biggest Django release since 1.0. It has a new app loading framework, a new checks framework, many improvements to query construction, and most importantly - Migrations.

其中最惹人注目的是Migrations,负责数据库表结构自动迁移,这个工作原先是由South来做的.现在是django原生功能啦!

它有多炫呢?我们通过例子来说明.

###搭建环境

1
2
3
4
5
6
cd /tmp
mkdir djangotest
cd djangotest
virtualenv django1.7
source django1.7/bin/activate
pip install https://github.com/django/django/archive/1.7b3.zip

###创建项目 承上.

1
2
3
django-admin startproject mysite
cd mysite
python manage.py startapp blog

将blog加入settings.py的INSTALL_APP里.

编辑blog/models.py:

1
2
3
from django.db import models
class Blog(models.Model):
    title = models.CharField(max_length=100)

回到项目根目录执行:python manage.py syncdb

###改变model 现在我想为Blog添加content属性.怎么办呢?
简单,直接将blog/models.py改为:

1
2
3
4
from django.db import models
class Blog(models.Model):
    title = models.CharField(max_length=100)
    content = models.CharField(max_length=100,default='')

这样是不够的,我们需要将数据库也同步,在django1.7以前,我们有两条解决方案:

  1. 使用manage提供的sqlall生成sql语句,然后手动在数据库中执行sql语句.这在djangobook中由介绍
  2. 使用south

使用django就容易多了.

我们只需执行两条指令:

1
2
python manage.py makemigrations
python manage.py migrate

搞定!
需要说明的是新加的属性,需要default参数,否则无法执行.

enjoying it~