django 反向生成models.py

Posted www.pu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 反向生成models.py相关的知识,希望对你有一定的参考价值。

我们在展示django ORM反向生成之前,我们先说一下怎么样正向生成代码

正向生成,指的是先创建model.py文件,书写类和各种字段,然后执行数据库迁移,在数据库如mysql中创建出符合model.py的表

反向生成,指的是先在数据库中create table,然后执行反向生成命令,根据已经存在的表生成model代码

一 准备工作

创建django项目以及app

创建django项目,名字是helloworld

django-admin.py startproject helloworld

创建app,名字是app01

python manage.py startapp app01  

配置数据库

在settings.py的INSTALLED_APPS注册app

# Application definition  
  
INSTALLED_APPS = [  
    django.contrib.admin,  
    django.contrib.auth,  
    django.contrib.contenttypes,  
    django.contrib.sessions,  
    django.contrib.messages,  
    django.contrib.staticfiles,  
    ‘app01,  
]  

在settings.py中配置数据库

DATABASES = {
    default: {
        ENGINE: django.db.backends.mysql,
        NAME: big_data,
        USER: root,
        PASSWORD: 123,
        HOST: ‘127.0.0.1,
        PORT: 3306,
    }
}

二 正向生成

在app01目录下model.py中写类和字段

from django.db import models

class AlarmGroup(models.Model):
    group_name = models.CharField(primary_key=True, max_length=250)
    group_des = models.TextField(blank=True, null=True)
    members = models.TextField(blank=True, null=True)
    timestamp = models.DateTimeField()

执行数据库迁移命令生成表

python manage.py makemigrations
python manage.py migrate

三 反向生成ORM

先在数据库中创建表

CREATE TABLE `alarm_group` (
  `group_name` varchar(250) NOT NULL,
  `group_des` blob,
  `members` blob,
  `timestamp` datetime NOT NULL,
  `on_duty` blob,
  `leader` blob,
  PRIMARY KEY (`group_name`)
) ENGIN

然后执行命令,生成model.py代码(加上app01可直接生成到models.py里面)

python manage.py inspectdb

生成的model代码如下

class AlarmGroup(models.Model):
    group_name = models.CharField(primary_key=True, max_length=250)
    group_des = models.TextField(blank=True, null=True)
    members = models.TextField(blank=True, null=True)
    timestamp = models.DateTimeField()

    class Meta:
        managed = False
        db_table = alarm_group

将model导入到app01的model.py文件里

python manage.py inspectdb > app01/models.py

 

 

以上是关于django 反向生成models.py的主要内容,如果未能解决你的问题,请参考以下文章

从数据库反向生成django项目中的models文件

关于django操作orm的一些事--反向生成orm连接多个数据库

常见操作

django models.py增加后MySQL数据库中并没有生成相应的表

第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表课程机构表讲师表

编写一个 django 查询并在一次数据库中获取反向相关对象!