Django学习migrate和makemigrations的差别

时间:2021-12-27 11:11:05 类型:python
字号:    

  在你改动了 model.py的内容之后执行下面的命令:

Python manger.py makemigrations

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

  你可以手动打开这个文件,看看里面是什么

  在此之后执行命令

  将该改动作用到数据库文件,比如产生table之类

  python manage.py makemigrations这个命令是记录我们对models.py的所有改动,并且将这个改动迁移到migrations这个文件下生成一个文件例如:0001文件,如果你接下来还要进行改动的话可能生成就是另外一个文件不一定都是0001文件,但是这个命令并没有作用到数据库,而当我们执行python manage.py migrate 命令时  这条命令的主要作用就是把这些改动作用到数据库也就是执行migrations里面新改动的迁移文件更新数据库,比如创建数据表,或者增加字段属性

  另外一个需要注意的是这两个命令默认情况下是作用于全局,也就是对所有最新更改的models或者migrations下面的迁移文件进行对应的操作,如果要想仅仅对部分app进行作用的话  则执行如下命令:

 

  python manage.py makemigrations appname,

  python manage.py migrate appname,

  如果要想精确到某一个迁移文件则可以使用:

  python manage.py migrate appname 文件名


<