本文介绍: 这个文件里面内容表示我们创建一个Project这个模型类,并且指出这个类的成员属性idname等以及定义,在models.py建模型类,其中一个模型类对应的是一张数据表,然而这条命令并未真正添加数据库表。由于Django自带的一个表django_migrations表中已经将之前生成的表添加进入了,比如。2、运行中会对managed=truemodel进行检测是否多个model使用同一个表名。表示通知Django即将做什么,并做一个记录,实际上并没有做。

一、命令详解

1、作用全局

python manage.py makemigrations 表示通知Django即将做什么,并做一个记录,实际上并没有做

python manage.py migrate  真正开始创建数据库

2、作用app文件

需要注意的是这两个命令默认情况下是作用全局,也就是对所有最新更改models或者

migrations下面的迁移文件进行对应操作,如果要想仅仅对部分app进行作用的话 ,则执行如下命令:

python manage.py makemigrations appname

通过makemigrations命令文件下多了一个001_initial文件

这个文件里面的内容表示我们创建了一个Project这个模型类,并且指出这个类的成员属性idname等以及定义,在models.py建模型类,其中一个模型类对应的是一张数据表,然而这条命令并未真正添加数据库

python manage.py migrate appname

 此时在看数据库project表已经在mysql中创建了

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

python manage.py migrate appname 0001_initial (文件名)

 二、问题解

由于之前生成过数据表,或者修改内容之后再次执行命令发现无法生成,例如

解决方法

1、删除001_initial文件

2、删除django_migrations表中记录

由于Django自带的一个表django_migrations表中已经将之前生成的表添加进入了,比如

3、重新执行上述两条命令

python manage.py makemigrations appname

python manage.py migrate appname

其他bug

models.E028:::同一个表名多个Model的db_table使用

1、在 appname/models.py 文件中 meta设置managed=False

2、运行中会对managed=truemodel进行检测是否多个model使用了同一个表名

 

 

原文地址:https://blog.csdn.net/Next_SummerAgain/article/details/131610183

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_43990.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注