本章会讲到如何从需求分析获得的实体数据转到模型设计中来,变成一Django 项目中的模型层,正式进入到实战项目开发过程,当然,第一步还是在 VS2019 IDE 环境中创建一个工程项目,本文我们把工程名称命名为 IndDemo ,如下图:
VS2019 创建的 Django 项目结构如下图
现在按 F5 调试程序,又来到 Django 熟悉的欢迎页面了。
接下来让开始这趟实战之旅吧 !
1.1.实体关系图
从上一章需求涉及到的实体,来构建我们的实体关系图吧,这里的步骤也相当于早期开发设计的表结构设计,只是如前面章节说的有了 ORM 机制后,我们讨论采用对象模型来设计和讨论实体可能更适合于实际的场景讨论,便于团队在同一个频道下沟通,当然这里实质上与表设计没有太多本质的区别,但是多对多等中间表在实体关系图中就看不到了,表结构设计时就不能忽略这个中间表的存在。产品经理更专注于需求而不是数据库存储结构是不是更符合专业分工?开发人员也不用大费周章来折腾表结构的优化了。嗯,这些可以丢给 DBA 来优化吧。
本图采用网址 ponyorm 网站在线绘制,网址: https://editor.ponyorm.com/ .
1.2. Django model 层
为了便于对照学习和理解,我们新增一个新的 APP 命名为: Task 来专门处理这个业务,不修改默认的 APP 里的代码,也便于过程中可以通过这个默认 APP 功能,参照它的结构和语法等。
现在我们的工程目录结构如下:
打开 Task.models.py 文件编写我们实体关系图的模型代码吧,作者本人比较习惯“大驼峰”命名法也就是首字母都大写的模式 TaskNum ,后面很多命名都会采用这个方式,不采用 python 主流的蛇形命名法的 task_num 方式,纯属个人习惯。我们依据设计我们开始构建我们的 model 代码如下:
from django.db import models from django.contrib.auth.models import User PRIORITY=((1,u'正常'),(2,u'急'),(3,u'紧急')) class Task(models.Model): TASK_STATE=((1,u'未处理'),(4,u'处理成功'),(5,u'执行中'),(99,u'完成'),(-1,u'已取消')) TaskId = models.AutoField(primary_key=True, db_column='task_id') TaskNum = models.IntegerField(u'任务号', null=False, db_column='task_num') Source = models.CharField(u'源地址', null=F