【详细解读】关于生成迁移文件的种种小问题!Running migrations: No migrations to apply等问题,请仔细阅读~

47 篇文章 2 订阅

我们都知道生成迁移文件主要是执行两条命令:

// 这里一般都会成功生成迁移文件
python manage.py makemigrations

在这里插入图片描述

但是往往我们不是新写的 models模板文件,而是在之前的基础上,新增的各种表,所以才会在生成表的时候,出现各种错误。

  • 就像上面的可以看到,生成了 PicTest 和 AreaInfo 两个类的迁移模板类。
  • 但是我新写的模板类,只有 PicTest 一个!!注意这是重点!

下面贴出我的 模板文件

from django.db import models

# Create your models here.

class AreaInfo(models.Model):
    """地址模型类"""
    # 地区名称
    atitle = models.CharField(verbose_name='标题', max_length=20)  # 通过verbose_name='标题' ,更改属性显示的标题为 '标题'

    # 自关联属性
    aParent = models.ForeignKey('self', null=True, blank=True)

    def __str__(self):
        # django 后台管理中默认显示的是 类名 object ,想要修改就这样:
        return self.atitle

    def title(self):
        return self.atitle
    title.admin_order_field = 'atitle'  # 使这一列,也具备点击标题进行排序的能力
    title.short_description = '地区名称'  # 指定标题的名称,不要是默认的 title

    def parent(self):
        if self.aParent is None:
            return ''

        return self.aParent
    parent.short_description = '父级地区名称'

# 持有这个类是新建的,其他都已经在数据库中生成表了。
class PicTest(models.Model):
    """上传图片"""
    goods_pic = models.ImageField(upload_to= 'booktest')  # 指定图片上传的位置,以media 目录看起

下面要说的就是,大家要会看报错,出现一堆错误,应该集中注意力到哪里,才能解决问题:

在这里插入图片描述

  • 首先将注意力集中在箭头所指的地方:
    意思就是,你的迁移文件根本没有被迁移!!!注意了,下面说解决方法:
  • 下面开启数据库,django是如何管理我们的生成文件的呢?
  • 在这里插入图片描述
  • 注意看这张表
  • select * from django_migrations
  • 在这里插入图片描述
  • 前面的app 就是对应的你的应用的名字,后面的name是它对应的迁移文件
  • 当你做迁移时,django会自动的来这个表里面进行比对,当在这个表里面找到对应的app时 ,django就不会再次生成这个迁移文件了!
  • 所以重点来了,可以看到我们之前生成的迁移文件,就叫做 0001_initial.py ,此时想要将次迁移文件生成表,就会报错,No migrations to apply!!!,因为已经有一个叫 booktest app 对应着 0001_initial,所以django在你执行生成表命令的时候,默认 0001_initial 迁移文件已经生成过! 所以不会再次帮你生成一次,就会报错,找不到。

  • 这个booktest 这是我们之前做迁移文件,留下来的记录!!

解决办法:

  • 1. 把对应的迁移文件记录给删除掉
  • delete from django_migrations wehere id=10; // 这个id 对应自己的记录!!!
  • 切记! 哪个冲突删哪个,千万不要不加条件!!把整个表的数据都删除了,清空之后,你在做迁移文件的时候,就会有一堆的错!!!!

  • 再次执行生成表的命令:
  • python mange.py migrate
  • 会发现问题解决了:
    在这里插入图片描述
    但是可以看到上面 还有新的错误:下面解决它
    在这里插入图片描述
  • 这个打开迁移文件就可以发现:django给我们生成了两张表模板类,
  • 在这里插入图片描述
  • 但是我们只定义了一个!! PicTest类,所以,django还想帮我们生成 Booktest_areainfo这张表,但是它已经存在了,就会报这样的错误! 解决方法,删除掉,只留下一个新写的类的迁移文件模板。
  • 在这里插入图片描述
  • 下面再次执行,生成表,就不会有问题啦!
    在这里插入图片描述

下面还会接着告诉你:

在这里插入图片描述

  • 大概意思即是 bookinfo 和 heroinfo 在项目中没有对应的模型类,问你是否删除掉他们
  • 答案:肯定是不删!! 因为那可能是其他项目中建立的数据表,非常重要可能。所以选择 no。就好了。

2(第二种解决方法). 把你的迁移文件改一个名字,使它不冲突记录中的名字**

好了,差不多就介绍到这里了! ,以后有啥问题还会继续总结,希望大家一起学习,有错误的地方,可以在评论区指出,或者有啥新知识,也可以说出来~~

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值