Python知识:为什么使用makemigrations提示No changes detected

本文探讨了在Django中遇到makemigrations提示"No changes detected"的问题,解释了数据库迁移的工作流程,包括makemigrations和migrate的执行过程,并给出了如何解决这个问题的建议,如检查django_migrations表和migrations目录,以及如何重新执行迁移操作。
摘要由CSDN通过智能技术生成

我们在使用Django创建工程的时候都使用makemigrations、migrate来生成最初的数据库模型,但是到最后都是直接在数据库中手动创建表,为什么呢?因为这些数据库迁移命令经常会显示No changes detected,明明我们已经改了数据库模型了,为什么提示没有变化呢?这里我们就要搞清楚,数据库迁移命令是怎么去识别模型变化的。详细的源码分析我这里就不做介绍了,说一下它的流程帮助你理解就可以了。

首先我们要知道,与数据库迁移相关的东西都有哪些?

  • models.py中定义的模型
  • APP下面的migrations目录
  • 数据库中的django_migrations表

makemigrations

执行makemigrations命令的时候,执行流程如下:

1 . 根据注册的APP,获取所有APP下的migrations目录,遍历其下的py文件(不以_~开头的)
2 . 然后根据文件中的内容生成对应的数据库表模型

class Migration(migrations.Migration):
 initial = True
 dependencies = [
 ]
 operations = [
 migrations.CreateModel(
 name='Course',
 fields=[
 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 ('title', models.CharField(max_length=64)),
 ],
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值