美文网首页
django反向生成models

django反向生成models

作者: 陌客百里 | 来源:发表于2019-10-31 16:56 被阅读0次
  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;

相关文章

网友评论

      本文标题:django反向生成models

      本文链接:https://www.haomeiwen.com/subject/mhbbvctx.html