您现在的位置是:网站首页>>Python>>Django

使用 python manage.py migrate 不能生成数据库表

发布时间:2018-11-01 11:42:58作者:wangjian浏览量:1215点赞量:0

    今天我在django项目的models.py中添加了如下代码

    # 学生表
    class Student(models.Model):
        name = models.CharField('学生姓名',max_length=100,default='')
        classes = models.ForeignKey('Classes',models.DO_NOTHING)
        class Meta:
            db_table = 'user'   #设置表名
    # 学生信息表
    class StudentDetail(models.Model):
        student = models.OneToOneField(Student,models.DO_NOTHING)  #这里就是关联用户表的字段,使用django生成数据库时生成的字段为user_id(这里的关联是一对一)
        age = models.IntegerField('年龄',default=0)
        height = models.CharField('身高',max_length=10,default='')
        sex = models.IntegerField('性别(0:男 1:女)',default=0)
        class Meta:
            db_table = 'student_detail'   #设置表名
    # 班级表
    class  Classes(models.Model):
        name = models.CharField('班级名称',max_length=10,default='')
        class Meta:
            db_table = 'classes'
    # 学生用具表
    class LearningTool:
        tool_name = models.CharField('用具名称',max_length=10,default='')
        student = models.ManyToManyField(Student,models.DO_NOTHING)
        class Meta:
            db_table = 'learning_tool'

    然后执行

    python manage.py makemigrations 
    python manage.py migrate

    发现数据库无法生成我想要的数据库表,总是提示如下信息

    image.png


    解决办法:

    1:删除项目目录下的数据库文件和缓存文件

    简单粗暴点直接删除数据库文件下的__pycache__和migration文件

    image.png

    2:然后删除数据库中django_migrations表对应数据表信息

    然后重新执行

    python manage.py makemigrations 
    python manage.py migrate

    这时候大部分情况数据库是会生成你想要的数据库表,但是我的情况是还是没有生成我想要的数据库表,这时候需要进行如下操作,执行:

    python manage.py makemigrations Model   #Model为你的app名
    python manage.py migrate Model

    这时候发现数据库中存在了我想要的数据库表

    image.png



0 +1