from django.db import models
class UserType(models.Model):
name=models.CharField(max_length=50)
class UserInfo(models.Model): #新建表
username=models.CharField(max_length=50) #新建静态字段
password=models.CharField(max_length=50) #新建静态字段
gender=models.BooleanField() #性别 用布尔类型,0或1 代表男女
age=models.IntegerField(default=18) #年龄 数字类型
memo=models.TextField(default='xxx') #文本类型
creatdate=models.DateTimeField(default='2016-12-06 16:52') #时间类型
typeid=models.ForeignKey('UserType') #给子表设置外键
代码如上所示,刚学习Django 操作Mysql数据库新建表,准备测试
用Eclipse 执行
python manage.py makeigrations
python manage.py migrate
并未生成对应的表,执行makeigrations 提示,(运行多次命令)
执行migrate ,Eclipse提示
cmd 中输入命令一样没效果
只有删除数据库所有的表后,
在未修改代码的情况下
,重新执行
python manage.py makeigrations
python manage.py migrate
才能生成对应的
UserType
和
UserInfo
表,求大神解释下问题
Django 版本 1.10 python 3.5
系统自动生成的有一张表django_migrations专门用来记录你的python manage.py makeigrations操作的,与项目根目录下migrations文件夹中的文件是一一对应的。假如,你之前已经在其他平台(如Linux命令行)运行过这些代码,创建了这些数据表。然后,你把代码拷贝到eclipse里面(migrations目录却没有了),修改了代码,此时执行python manage.py makeigrations,生成新的migrations文件,假设为0001_initial.py,但是数据表django_migrations中已经有这个记录了,程序就会判定为没有发生更新。所以你把数据库删除(其实是把django_migrations表中的记录删除了)后,就相当于全新建库、建表了。