django根据数据库生成模型类

1. settings.py配置数据库信息

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        # To negate the effect of atomic request,
        # use @transaction.non_atomic_requests on views.
        'ATOMIC_REQUESTS': True,
        'NAME': sys_settings.DefaultMySQL.name,
        'USER': sys_settings.DefaultMySQL.user,
        'PASSWORD': sys_settings.DefaultMySQL.password,
        'HOST': sys_settings.DefaultMySQL.host,
        'PORT': sys_settings.DefaultMySQL.port,
        # 'OPTIONS': {"init_command": "SET storage_engine=INNODB"},
        "OPTIONS":{"init_command":"SET default_storage_engine=INNODB;"},
        'TEST': {
            'NAME': 'test_%s' % sys_settings.DefaultMySQL.name,
            'CHARSET': 'utf8',
            'COLLATION': 'utf8_general_ci',
        }

    }
}

2. 反向生成模型

python manage.py inspectdb 
  • 如果只想指定单个表生成模型,则可以加上盖表名
python manage.py inspectdb 表名 > models.py

3. 修正模型

  1. 模型名:可根据自己需求进行修改
  2. 模型所属app:根据自己需求进行分配
  3. 模型外键引用:将所有使用ForeignKey的地方,模型都改成字符串,这样就不会产生模型顺序的问题。另外,如果引用的模型已经移动到其他app中了,那么还要加上这个app的前缀
  4. 让django管理模型:将Meta下的managed=False删掉,如果保留这个,那么以后对模型的任何修改,使用migrate都不会映射到数据库
  5. 表名:切记不要修改表的名字db_table,不然映射到数据库中,会发生找不到对应表的错误
  6. 外键级联关系:根据自己实际情况进行修改
  7. 多对多关系:有数据库反向生成模型时,多对多关系默认会创建第三张表来处理关系,这块需要我们手动删除第三张关系表,自己添加ManyToManyField关系字段,然后使用db_table=xxx指定数据表名称为数据库中对应表的名称。

4. 初始化

  • 执行python manage.py makemigrtaions生成初始化的迁移脚本。方便后面通过orm来管理表。
  • 执行python manage.py migrate --fake-initial

5. 数据库映射

  • django的核心数据表映射到数据库中
  • 执行python manage.py migrate
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值