Django中的makemigrations和migrate

1、makemigrations

python manage.py makemigrations app1 app2

在运行此代码时:

Django中的makemigrations和migrate_第1张图片

其实是在app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py,但是这个改动还没有作用到数据库文件,数据库没有增加新的表。

根据检测到的模型创建新的迁移。迁移的作用,更多的是将数据库的操作,以文件的形式记录下来,方便以后检查、调用、重做等等。尤其是对于Git版本管理,它无法获知数据库是如何变化的,只能通过迁移文件中的记录来追溯和保存。

 

2、migrate

接着执行migrate,这时候才真的把作用到数据库文件,产生对应的表

python manage.py migrate

使数据库状态与当前模型集和迁移集同步。说白了,就是将对数据库的更改,主要是数据表设计的更改,在数据库中真实执行。例如,新建、修改、删除数据表,新增、修改、删除某数据表内的字段等等。

 

3、如何禁用migrate的功能

Django >= 1.9

1.9 中有这么一个配置项目 MIGRATION_MODULES。

from settings import *

MIGRATION_MODULES = {
    'auth': None,
    'contenttypes': None,
    'default': None,
    'sessions': None,

    'core': None,
    'profiles': None,
    'snippets': None,
    'scaffold_templates': None,
}

Django < 1.9:

from settings import *
class DisableMigrations(object):
    def __contains__(self, item):
        return True

    def __getitem__(self, item):
        return 'notmigrations'

MIGRATION_MODULES = DisableMigrations()

其他Django版本:

SOUTH_TESTS_MIGRATE = False

 

 

你可能感兴趣的:(Python,Django)