官方文档:https://docs.djangoproject.com/en/dev/topics/migrations/

1.7 之前大家可能会用south用于管理数据库的模型的同步。1.7之后django已经集成了这个功能。下面做简单示例:

1). 新建一个项目 test_migrations, 并新建一个app: test_m

2). 修改test_migrations的settings.py,使其INSTALLED_APP包含test_m,请修改test_m的models.py文件,如下:

from django.db import models

class test_m(models.Model):
name = models.CharFiled(max_length=32)

3). 生成迁移文件并迁移,在test_migrations目录下执行以下指令:

./manage.py makemigrations
./manage.py migrate

以上指令会自动将project下面的所有app自动建议新的迁移版本(0001_initial.py,内容如下)并迁移,这个比south要简洁一些。

# -*-  coding:utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations class Migration(migrations.Migration):
dependencies=[]
operations = [
migrations.CreateModel(
name= 'test_m',
fields = [
('id',models.AutoField(verbose_name='ID',serialize=False,auto_created=True,primary_key=True)),
('name',models.CharField(max_length=32))
],
options={},
bases=(models.Model,)
),
]

4). 修改2)中的model,添加字段sex,如下:

from django.db import models

class test_m(models.Model):
name = models.CharField(max_length=32)
sex = models.CharField(choices=[('m','male'),('f','female')],max_length=32)

5). 再来一次makemigration/migrate,会生成一个0002_test_m_sex.py文件,并询问设置默认值为多少。迁移完成会有如下提示:

Operations  to perform:
Apply all migrations:admin,contenttypes,test_m,auth,sessions
Running migrations:
Applying test_m.0002_test_p_sex... OK

  

备注:还有一个命令,用于查看sql,示例如下:

./manage.py sqlmigrate test_m 0002_test_m_sex
BEGIN;
CREATE TABLE "test_m_test_p__new" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(32) NOT NULL, "sex" varchar(32) NOT NULL);
INSERT INTO "test_m_test_p__new" ("sex", "id", "name") SELECT 'male', "id", "name" FROM "test_perm_test_p";
DROP TABLE "test_m_test_p";
ALTER TABLE "test_m_test_p__new" RENAME TO "test_m_test_p";

django 1.7 新特性 --- data migration的更多相关文章

  1. Django 2.0 新特性 抢先看!

    一.Python兼容性 Django 2.0支持Python3.4.3.5和3.6.Django官方强烈推荐每个系列的最新版本. 最重要的是Django 2.0不再支持Python2! Django ...

  2. Java8 新特性 Data Time API

    Java8新的日期类型 在Java8以前,Date日期API对我们非常的不友好,它无法表示日期,只能以毫秒的精试来表示时间,并且可以修改,他的线程还不是安全的.所以Java8中引入了全新的日期和时间A ...

  3. Django若干新版本一些新特性

    前面那篇文章简单总结了1.9版本的新特性,其实这是我一直想做的一件事情,不过因为对于工作不是那么紧急需要,所以一直被搁浅着,今天既然做了就多做一点吧 Django1.8的新特性大概(2015年4月发布 ...

  4. SQL Server 2014 BI新特性(一)五个关键点带你了解Excel下的Data Explorer

    Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企业中的自助式的商业智能变得更加的灵活,从而也降低了商业智能的门槛. 此文是在微软商业智能官方博客里 ...

  5. 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性

    [索引页][源码下载] 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性 作者:weba ...

  6. SQL Server 2014新特性:五个关键点带你了解Excel下的Data Explorer

    SQL Server 2014新特性:五个关键点带你了解Excel下的Data Explorer Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企 ...

  7. 11G新特性 -- flashback data archive(1)

    虽然可以依赖undo数据来查询row的旧版本数据,甚至可以执行逻辑恢复.但是你不能期待在undo中找到非常旧的数据.undo数据主要是用来提供读一致性. 在11G中,提供了Flashback Data ...

  8. 浅析Oracle 12c中Data Guard新特性

    浅析Oracle 12c中Data Guard新特性   写在前面 无论是做Oracle运维的小伙伴还是老伙伴,想必对Oracle数据库的数据级灾备核心技术—Data Guard是再熟悉不过了!这项从 ...

  9. Oracle 12C 新特性之扩展数据类型(extended data type)

    Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节.只要可能,扩展字 ...

随机推荐

  1. c# 通过反射获取私有方法

    class Program { static void Main(string[] args) { //通过反射来调私有的成员 Type type = typeof(Person); //Bindin ...

  2. c# JD快速搜索工具,2015分析JD搜索报文,模拟请求搜索数据,快速定位宝贝排行位置。

    分析JD搜索报文 搜索关键字 女装 第二页,分2次加载. rt=1&stop=1&click=&psort=&page=3http://search.jd.com/Se ...

  3. linux 安装webbench

    webbench :1.5  http://soft.vpser.net/test/webbench/webbench-1.5.tar.gz从官网下载webbench-1.5.tar.gz1.解压 t ...

  4. NLP的两种工具的java版使用:复旦FudanNLP,中科院计算所ICTCLAS2013

    编程语言:java 三种工具的简要介绍: FudanNLP google project上的介绍是: FudanNLP主要是为中文自然语言处理而开发的工具包,也包含为实现这些任务的机器学习算法和数据集 ...

  5. formData_html5_map标签

    1 : //更省事 var files = fileInput.files; var formData = new FormData(); //将所有文件插入formData formData .ap ...

  6. Java-优化技术

    常用的: 1.优化循环.通过重新组织重复的子表达式来提高循环体的运行性能. 2减少使用对象的数量来提高运行性能. 3.缩减网络传输数据来缩短等待时间. 其他: 1.采用对象池技术,提高对象的利用效率. ...

  7. 9.Android之日期对话框DatePicker控件学习

    设置日期对话框在手机经常用到,今天来学习下. 首先设置好布局文件:如图 xml对应代码 <?xml version="1.0" encoding="utf-8&qu ...

  8. Eclipse在线安装ADT插件

    要想使用Eclipse开发Android应用,首先要安装一个ADT插件,在此记录一下在Eclipse中采用在线安装的方式ADT插件,我使用的Eclipse版本是:eclipse-jee-luna-SR ...

  9. Spring AOP 系列总括

    Spring有两大核心,IOC和AOP.IOC在Java Web项目中无时无刻不在使用,然而AOP用的比较少,尤其是对一些初级程序员,在架构师搭好的框架上开发应用代码,AOP几乎是透明的.然而,项目中 ...

  10. MyEclipse------带进度条的输入流

    other.jsp <%@ page language="java" import="java.util.*" pageEncoding="UT ...