使用 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
发现数据库无法生成我想要的数据库表,总是提示如下信息
解决办法:
1:删除项目目录下的数据库文件和缓存文件
简单粗暴点直接删除数据库文件下的__pycache__和migration文件
2:然后删除数据库中django_migrations表对应数据表信息
然后重新执行
python manage.py makemigrations python manage.py migrate
这时候大部分情况数据库是会生成你想要的数据库表,但是我的情况是还是没有生成我想要的数据库表,这时候需要进行如下操作,执行:
python manage.py makemigrations Model #Model为你的app名 python manage.py migrate Model
这时候发现数据库中存在了我想要的数据库表
上一篇:django 实现连表查询