Django5+Vue3:OA系统前后端分离项目实战-添加部门表(5)

Django5+Vue3系列文章

前言

 此项目采用 Django 框架的 5.0.7 版本进行开发。

Django 5.0 支持的 Python 版本为 3.10、3.11 和 3.12。

OA 系统系列文章将持续更新,直至项目的 Docker 部署阶段。

专栏链接:  ~快捷传送门: 留个赞再走呗😭! ~

个人博客: ~所有文章尽在简客免费阅读~

文章目录

目录

Django5+Vue3系列文章

前言

文章目录

一、部门表

二、新建部门表模型

1.创建OADepartment部门表模型

2.关联User与OADepartment

三、模型映射

总结

一、部门表

  • 董事会:由张三和李四组成。
  • 运营部:由一个领导(AA运营)负责,部门下有四名员工。
  • 技术部:同样由一个领导(BB技术)负责,部门下有四名员工。
  • 销售部:由一个领导(CC销售)负责,部门下有四名员工。
  • 行政部:由一个领导(DD行政)负责,部门下也有四名员工。
  • AA运营,BB技术,CC销售,DD行政分别是四个部门的领导
  • 张三是运营部和技术部的经理。
  • 李四是销售部和行政部的经理。

二、新建部门表模型

1.创建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: 一对多字段类型(可为空)

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

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fender的web学习路程

蟹蟹你的奶茶😘

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值