Django5+Vue3:OA系统前后端分离项目实战-添加部门表(5)
Django5+Vue3 系列文章
前言
此项目采用 Django 框架的 5.0.7 版本进行开发。
Django 5.0 支持的 Python 版本为 3.10、3.11 和 3.12。
CSDN 专栏链接: ~快捷传送门: 留个赞再走呗 😭! ~
正文
1. 详解部门表
- 董事会:由张三和李四组成。
- 运营部:由一个领导(AA运营)负责,部门下有四名员工。
- 技术部:同样由一个领导(BB技术)负责,部门下有四名员工。
- 销售部:由一个领导(CC销售)负责,部门下有四名员工。
- 行政部:由一个领导(DD行政)负责,部门下也有四名员工。
- AA运营,BB技术,CC销售,DD行政分别是四个部门的领导
- 张三是运营部和技术部的经理。
- 李四是销售部和行政部的经理。
新建部门表模型
创建OADepartment部门表模型
class OADepartment(models.Model):
name = models.CharField(max_length=100)
intro = models.CharField(max_length=200)
# leader: 目前假设一个部门只有一个leader,一个leader只能管理一个部门(非manager)
# related_query_name: 用于跨表查询
leader = models.OneToOneField(OAUser, on_delete=models.SET_NULL, null=True,related_name="leader_department", related_query_name="leader_department")
# manager: 一对多使用外键
manager = models.ForeignKey(OAUser, null=True, on_delete=models.SET_NULL,related_name="manager_departments", related_query_name="manager_department")
字段名讲解:
- name: 字符串类型(最大长度为100)
- intro: 字符串类型(最大长度为200)
- leader: 一对一字段类型(可为空)
- manager: 一对多字段类型(可为空)
关联User与OADepartment
此处,为了简单演示,每个用户只隶属于一个部门。可以尝试将部门的字段直接定义在User表上。
因为OADepartment表定义在OAUser模型下方,此处外键引用使用'OADepartment'字符串形式
department = models.ForeignKey('OADepartment', null=True, on_delete=models.SET_NULL, related_name='staffs', related_query_name="staffs")
Tips: 如果有时间,可以创建一张专门用于用户和部门绑定关系的表。这个关系是一种多对多的关系,也就是说一个用户可以隶属于多个部门。
模型映射
python manage.py makemigrations
python manage.py migrate
检查数据库(示例):
总结
本节概述了OADepartment模型的设计,包括其内部结构和与OAUser模型的关联,确保了模型在数据库的正确映射。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Fender