Django migrations 默认目录修改的方法教程

如何使用

migrations的使用非常简单: 修改model, 比如增加field, 然后运行

python manager.py makemigrations

你的mmodel会被扫描, 然后与之前的版本作比较, 在app的migrations目录下生成本次迁移文件.

我们建议查看一下该迁移文件, 确保没有问题. 然后运行:

python manager.py migrate

migrate命令会进行比较, 并应用该迁移.

migrations 默认目录修改

群里看到个问题:

migrations目录默认放在./app/models/migrations下面,能指定到别的目录吗?比如/data/app/models/migrations下么?

闲来无事,就稍稍研究了一下。

先从Migration 方向入手,翻遍手册,没有发现可以指定 path 的地方。

再从 settings 着手,查找有没有相关可设置的方向,稍稍有所收获:

MIGRATION_MODULES 选项,可以指定各个label的migration的包路径及名字。但还是相对路径,除非指定一个当前程序路径外的包路径?这点我没有去验证。

最后再从源码入手,其实就在

Lib\site-packages\django\core\management\commands\makemigrations.py 中使用了 MigrationWriter 类而MigrationWriter类中的 path 方法决定了路径,path方法 调用了 basedir 和 filename 方法,一个控制文件名,一个管理路径。在不想改变文件名的情况下,只需要修改basedir 方法中的 返回值就可以实现这个需求。

Tips: 改完系统包,需要部署到其它环境的时候不要忘了将修改带过去!

basedir 中调用了 MigrationLoader 的 migrations_module 方法,该方法返回 app_label 名称 及 一个布尔值

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 解决Django数据库makemigrations有变化但是migrate时未变动问题

    写models.py时缺少了一个 verbose_name,导致数据库出现问题,整了很久,摸索出重新建立数据库的方法: 首先删除每个app中的migrations中的除了init.py的文件,在数据库中清空所有的表,然后执行migrate,这时会自动生成系统默认的那些表,然后执行makemigrations,再执行migrate 如果只是众多应用中的一个出了问题的话,删除与之相关的表,然后进入django_migrations表中,将相应的app那项记录删除,然后再执行 makemigratio

  • 浅谈Django学习migrate和makemigrations的差别

    本文主要研究的是Django中migrate和makemigrations的差别,具体如下. 在你改动了 model.py的内容之后执行下面的命令: Python manger.py makemigrations 相当于 在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py, 但是这个改动还没有作用到数据库文件 你可以手动打开这个文件,看看里面是什么 在此之后执行命令 python manager.py migrate 将该改

  • Django migrations 默认目录修改的方法教程

    如何使用 migrations的使用非常简单: 修改model, 比如增加field, 然后运行 python manager.py makemigrations 你的mmodel会被扫描, 然后与之前的版本作比较, 在app的migrations目录下生成本次迁移文件. 我们建议查看一下该迁移文件, 确保没有问题. 然后运行: python manager.py migrate migrate命令会进行比较, 并应用该迁移. migrations 默认目录修改 群里看到个问题: migrati

  • Docker默认网段修改实现方法解析

    背景 公司的服务器全部都是购买的阿里云ECS主机,默认内网网段为172.16.0.0/12,测试服上的服务基本都是使用Docker部署的. 之前的同事在该机器上安装的Docker全部都是默认配置,网段为172.17.0.0/24,在实际使用中会有访问宿主机的需求,通过172.17.0.1来访问,这样就会与其他宿主机ip冲突,所以需要修改容器的默认网段. 解决方法 1.停止宿主机上的Docker服务 sudo systemctl stop docker 2.修改容器配置文件/etc/docker/

  • Django后端按照日期查询的方法教程

    前言 最近接触过一些按照日期筛选查询数据的案例,看到过一篇博客,总结了一些后端时间筛选的方法,这里本人也总结记录一下,以备不时之需.简单应用请参考这篇博客----->传送门 与单个时间进行比较筛选 start的取值按照不同的筛选条件改变 start = datetime.timedelta(hours=23,minutes=59,seconds=59) # datetime.timedelta是计算时间差之前的日期,即距离现在23小时59分钟59秒的时间,即一天前 # 查询今天一天之内的数据 m

  • Ubuntu Server 10.04修改Apache的默认目录的方法

    在Ubuntu Server 10.04中默认由apt方式安装的Apache,指定网页主目录位于:/var/www.而我需要将其更改为: /home/www.因为我的系统/var所分到的空间太少,而我又有提供通过web方式提供网络存储的需要.比较糟糕的是:我的/etc /apache2/sites-enabled/000-default文件在修改后消失掉了.结果导致apache服务出现错误,网站不能运行了.在最后一部分我记录了如何解决这个问题. 一.查找Apache的配置文件 # cd /etc

  • apache 默认目录的修改方法 .

    由于实验室博客系统崩了,所以要考虑重新建立博客系统,首先遇到的一个问题就是原来的博客系统是安装一个独立的磁盘上面的,不是安装在系统盘上面的,然而一般在linux下面安装的apache的默认目录是在/var/www这个目录下面,所以在这里遇到的第一个问题就是怎么转换apache的默认安装目录.经过网上的查找,写了如下总结,主要是为了自己以后遇到同样的问题能更快的查找,同时如果能帮到能用上的人,那就再好不过了.方法如下: 修改apache2的默认文档目录(默认是在/var/www) 修改命令:sud

  • npm全局模块卸载及默认安装目录修改方法

    卸载全局安装模块  npm uninstall -g <package> 卸载后,你可以到 /node_modules/ 目录下查看包是否还存在,或者使用以下命令查看:npm ls npm的指令还是要多看英文文档,如https://docs.npmjs.com/. 查看所有全局安装的模块 npm ls -g 查看npm默认设置(部分) npm config ls 查看npm默认设置(全部) npm config ls -l 如图,可以看出全局模块默认安装在prefix目录下  C:\Users

  • Android开发中Launcher3常见默认配置修改方法总结

    本文实例讲述了Android开发中Launcher3常见默认配置修改方法.分享给大家供大家参考,具体如下: Launcher概述 Launcher是开机完成后第一个启动的应用,用来展示应用列表和快捷方式.小部件等.Launcher作为第一个(开机后第一个启动的应用)展示给用户的应用程序,其设计的好坏影响到用户的体验,甚至影响用户购机的判断.所以很多品牌厂商都会不遗余力的对Launcher进行深度定制,如小米的MIUI.华为的EMUI等.Android默认的Launcher没有过多的定制,更加简洁

  • MySQL修改默认字符集编码的方法

    今天又遇到修改MySQL默认字符集编码的问题,折腾了半天解决了,赶快记录下来,以后就不用每次折腾了. 查看MySQL字符集的命令是"show variables like '%char%';". 以MySQL5.6为例,默认的字符集为: 在工作中需要将字符集全部修改为utf8. 以下是修改的方法: 1.打开安装目录,默认在"C:\Program Files\MySQL\MySQL Server 5.6", 2.在当前文件夹中复制一份"my-default.

  • 修改Tomcat默认访问根目录的方法

    在Tomcat默认安装后,tomcat的主目录是webapps/root目录. 在conf文件夹下面找到server.xml 打开 在<hosts>  ......</hosts>中间添加一行 复制代码 代码如下: <Context path="" docBase="/usr/tomcat/apache-tomcat-8.5.11/webapps/guanwang" debug="0" reloadable=&quo

  • 修改NPM全局模式的默认安装路径的方法

    一般情况下,我们安装Node.js环境,程序会自动把NPM全局模块的路径设置在系统盘(通常是C盘下),我们在项目开发阶段不建议全局路径设置在系统盘,不但会影响电脑的性能,而且还很不安全.可以通过以下命令来设置默认下载的全局路径目录: 输入命令,查看当前配置: npm config ls 运行结果: 如果是第一次使用NPM安装包的话,在配置中只会看到prefix的选项,就是NPM默认的全局安装目录.但是如果有多次使用NPM安装包的话,就会看到cache和prefix两个路径,如下图: 第一步: 在

随机推荐