菜单
本页目录

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模型的关联,确保了模型在数据库的正确映射。