正向生成,指的是先创建model.py文件,然后通过django内置的编译器,在数据库如mysql中创建出符合model.py的表。
反向生成,指的是先在数据库中create table,然后通过django内置的编译器,生成model代码。
首先创建django工程以及app
创建django工程,名字是wechat
django-admin.py startproject wechat
然后生成app
python manage.py startapp datatest
配置app以及数据库
配置app(在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', 'datatest', ]
配置数据库(在settings.py中配置数据库)
# 这是MySQL的配置连接方式,其他数据库在这个配置代码的上方有个地址 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'jmj', 'USER': 'root', 'PASSWORD': 'root', 'HOST': '127.0.0.1', 'PORT': '3306', } }
正向生成
在datatest app的目录下创建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
反向生成
首先在数据库中创建表
DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(5) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `tel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `dept` int(5) NOT NULL, `wechatid` int(255) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `fk_user_dept`(`dept`) USING BTREE, CONSTRAINT `fk_user_dept` FOREIGN KEY (`dept`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
然后执行命令,生成model.py代码
python manage.py inspectdb