django反向生成models

  1. Django设置好数据
    数据库中应该有对应的表

  2. 执行命令
    命令:python manage.py inspectdb > [app]/models.py

  3. 生成同步文件
    python manage.py makemigrations [app];

  4. 跳过创建数据库阶段
    因为此时数据库中已经有数据了,所以应该跳过初始化阶段
    python manage.py migrate [app] –fake

  5. 删除0001_initial.py中的id字段添加
    因为跳过了创建数据库阶段,因此不能在跳过之前就添加主键,否则会造成第二次没有变动,无法makemigrations

  6. 手动修改
    详情见生成的文件顶部的说明
    –1. 可以对model进行排序
    –2. 确保每一个model都有一个primary_key
    –3. 确保关联的 外键有 on_delete
    –4. 删除 ’managed = True’ 才能够直接使用
    –5. 可以改models的名字,但不能改字段和db_table
    –6. 非自增id做组件,需要添加默认值 default

7.生成迁移文件
python manage.py makemigrations [app]

8.迁移文件
python manage.py migrate app

9.完成
记一下坑:使用pandas.to_sql 默认存储的字符串字段统一为 TextField 类型(该字段不能作为mysql的主键)
解决办法:
1. 存储前使用 dtype={‘code’:VARCHAR(length=6)} 来指定字段数据类型
2. 存储后解决,将TextField 改为 CharField

坑2: django-model不支持双主键,需要在mysql另外添加主键(此步骤应该放在首次migrate之前使用):
table base_dictmark add dict_id int not null primary key Auto_increment first;

https://www.jianshu.com/p/2f2c09c92e9c

Python量化投资网携手4326手游为资深游戏玩家推荐:《梦幻模拟战:同一个英雄战力比人别低1000?你需要注意这4个地方

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论