Django 1.7 shiyong - WBowam/wbowam.github.com GitHub Wiki
Date: 2014-09-07
Title: Django 1.7试用
Tags: Django
Category: It
首先感谢django团队,在这一版本里django自身提供了数据迁移功能——migration
修改Model后可以在不影响现有数据的前提下重建表结构。
django的migration功能,类似与South的migration功能。
django-admin.py startproject mysite
## Create the tables in the database before we can use them.
python manage.py migrate
## Create superuser.
python manage.py createsuperuser
python manage.py startapp myblog
##1.7版django这一步时会创建一个migrations/目录
##settings.py
INSTALLED_APPS =(
####
'myblog',
)
##models.py
class Article(models.Model):
title = models.CharField(max_length=18, null=True)
(覆盖了syncdb功能,不过别担心,syncdb仍然还有~)
python manage.py makemigrations myblog
运行结果如下
Migrations for ‘myblog’:
0001_initial.py:
- Create model Article
看看生成了哪些文件
ls myblog/migrations/
__init__.py 0001_initial.py
class Article(models.Model):
title = models.CharField(max_length=18, null=True)
author = models.OneToOneField(User, null=True)
python manage.py makemigrations myblog
##运行结果
Migrations for ‘myblog’:
0002_article_author.py:
- Add field author to article
我们来看看他重新生成数据表时干了些什么
- 从上一个migration中获取之前的Model列表,写到set中.
- 获取现有的model列表,写入set中。
- 遍历这两个set的差集,获取差集Model中所有的field,如果field的定义相同,就询问用户是否是一个rename的model,否则视为创建。
python manage.py migrate myblog
That's all 以上是个人对migration的理解,求纠错和指点~~