Django如何重置migration的几种情景

情景一:不需要原有的数据库数据

  1. 删除数据库所有的表
  2. 删除项目的migration模块中的所有 文件,除了__init__.py 文件
  3. 执行脚本
python manage.py makemigrations
python manage.py migrate

情景2:不想要删除现有的数据库,只是想重新建立 migration 文件

首先要保证,目前的migration文件和数据库是同步的,通过执行

python manage.py makemigrations

如果看到 这样的提示: No changes detected,则可以继续接下来的步骤

通过执行

python manage.py showmigrations

结果,可以看到当前项目,所有的app及对应的已经生效的migration文件如

git_hook
 [X] 0001_initial
guardian
 [X] 0001_initial
kombu_transport_django
 [X] 0001_initial
message
 (no migrations)
order
 [X] 0001_initial
pay
 [X] 0001_initial
 [x] 0002_add_model
sessions
 [X] 0001_initial

通过执行

$ python manage.py migrate --fake pay zero

这里的 pay就是你要重置的app

之后再执行 python manage.py showmigrations,你会发现 文件前的 [x] 变成了[ ]

现在,你可以删除pay 这个 app下的migrations模块中 除 init.py 之外的所有文件。

之后,执行

$ python manage.py makemigrations

程序会再次为这个app 生成 0001_initial.py 之类的文件

最重要的一步来了, 执行

python manage.py migrate --fake-inital

–fake-inital 会在数据库中的 migrations表中记录当前这个app 执行到 0001_initial.py ,但是它不会真的执行该文件中的 代码。
这样就做到了,既不对现有的数据库改动,而又可以重置 migraion 文件,妈妈再也不用在 migration模块中看到一推文件了。

参考https://simpleisbetterthancomplex.com/tutorial/2016/07/26/how-to-reset-migrations.html

到此这篇关于Django如何重置migration的几种情景的文章就介绍到这了,更多相关Django 重置migration内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解重置Django migration的常见方式

    根据django官方文档建议,开发过程中会把生成的migrations提交到git中.由于各种原因,会有一些场景需要重置migrations,故总结一些常用场景及解决办法. 场景一 不考虑数据库数据,可以完全清空数据库. 步骤: 删除所有migrations find . -path "*/migrations/*.py" -not -name "__init__.py" -delete find . -path "*/migrations/*.pyc&q

  • Django重置migrations文件的方法步骤

    Django开发过程中如果数据库变动过多导致migrations的文件越来越多,管理起来很不方便, 幸运的是Django提供了一种方式可以是这些文件重置到0001状态,而且不删除原有数据. 确认migration文件跟数据库同步 $ python3 manage.py makemigrations 如果提示 No changes detected 那么数据就是同步的. 查看当前migration文件记录 $ python3 manage.py showmigrations admin [X] 0

  • Django如何重置migration的几种情景

    情景一:不需要原有的数据库数据 删除数据库所有的表 删除项目的migration模块中的所有 文件,除了__init__.py 文件 执行脚本 python manage.py makemigrations python manage.py migrate 情景2:不想要删除现有的数据库,只是想重新建立 migration 文件 首先要保证,目前的migration文件和数据库是同步的,通过执行 python manage.py makemigrations 如果看到 这样的提示: No cha

  • Django 添加静态文件的两种实现方法(必看篇)

    Django添加静态文件有两种方法: 首先setting.py配置文件中添加静态文件的路径: STATICFILES_DIRS = [ os.path.join(BASE_DIR, "statics"),]  statices为你所建立的存放静态文件的文件夹名 然后进行引用. 1.html 文件中通过 /static/资源名的方式,就可以访问到资源 2.①html 文件头部填写  {% load staticfiles %},②路径填写  {% static 'css/xx.css'

  • JavaScript中boolean类型之三种情景实例代码

    实例如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Co

  • Django接受前端数据的几种方法总结

    背景 测试工具箱写到一半,今天遇到了一个前后端数据交互的问题,就一起做一下整理. 环境 -------------------------------------------------------- 版本相关 操作系统:Mac OS X EI Caption Python版本:2.7 IDE:PyCharm Django: 1.8.2 --------------------------------------------------------- 注: 我测试的是Get方法,POST方法也同

  • react+django清除浏览器缓存的几种方法小结

    一. meta方法 打包好的入口index.html头部加入 <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"> <META HTTP-EQUIV="expires" CONTENT="0&

  • 对django的User模型和四种扩展/重写方法小结

    User模型 User模型是这个框架的核心部分.他的完整的路径是在django.contrib.auth.models.User.以下对这个User对象做一个简单了解: 字段: 内置的User模型拥有以下的字段: username: 用户名.150个字符以内.可以包含数字和英文字符,以及_.@.+..和-字符.不能为空,且必须唯一! first_name:歪果仁的first_name,在30个字符以内.可以为空. last_name:歪果仁的last_name,在150个字符以内.可以为空. e

  • 详解git merge命令应用的三种情景

    一.git merge 命令应用的三种情景 1.1 "快进"(无冲突) master分支 假设现在只有一个默认的 master 分支,并提交了3次,B0.B1和B2都是提交对象. 首先要清楚,每次产生的提交对象会包含一个指向上次提交对象(父对象)的指针,所以图中B0.B1和B2之间的箭头是指针指向父对象的意思,真正的提交顺序还是B0到B1再到B2.同时 master 指针指向最新的提交B2. 另外Git中还有一个名为 HEAD 的特殊指针,它是一个指针,指向当前所在的本地分支(可以将

  • django上传文件的三种方式

    Django文件上传需要考虑的重要事项 文件或图片一般通过表单进行.用户在前端点击文件上传,然后以POST方式将数据和文件提交到服务器.服务器在接收到POST请求后需要将其存储在服务器上的某个地方.Django默认的存储地址是相对于根目录的/media/文件夹,存储的默认文件名就是文件本来的名字.上传的文件如果不大于2.5MB,会先存入服务器内存中,然后再写入磁盘.如果上传的文件很大,Django会把文件先存入临时文件,再写入磁盘. Django默认处理方式会出现一个问题,所有文件都存储在一个文

  • pandas中DataFrame重置索引的几种方法

    在pandas中,经常对数据进行处理 而导致数据索引顺序混乱,从而影响数据读取.插入等. 小笔总结了以下几种重置索引的方法: import pandas as pd import numpy as np df = pd.DataFrame(np.arange(20).reshape((5, 4)),columns=['a', 'b', 'c', 'd']) #得到df: a b c d 0 0 1 2 3 1 4 5 6 7 2 8 9 10 11 3 12 13 14 15 4 16 17 1

  • Django项目连接MongoDB的三种方法

    目录 Django 和 MongoDB 设置 安装: 创建: 激活: 使用 PyMongo 连接 Django 和 MongoDB 使用 MongoEngine 连接 Django 和 MongoDB 使用 Djongo 连接 Django 和 MongoDB Django 和 MongoDB 教程 有三种方法连接Django到MongoDB数据库 1.PyMongo:PyMongo 是 MongoDB 与 Django 交互的标准驱动程序.这是在 Python 中使用 MongoDB 的官方和

随机推荐