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表中的记录删除了)后,就相当于全新建库、建表了。 评论 ( 1 )