复用学生管理的设计思路实现老师管理
实现老师管理模块(复用学生管理的设计思路)
在前面的课程中,我们已经完整实现了学生管理模块,包括:
- 列表展示
- 新增 / 编辑 / 删除
- 搜索
- 批量操作
- Excel 导入与导出
可以说,一个后台管理中最常见的功能,我们都已经覆盖到了。
接下来,我们来实现老师管理模块。
1.老师管理的整体思路
在正式开始之前,先明确一点:
老师管理的功能结构,与学生管理几乎完全一致。
同样包含:
- 列表页
- 新增
- 编辑
- 删除
- 搜索
因此,这一节的重点并不是「再写一遍 CRUD」, 而是学习如何:
复用已有的设计思路,快速实现一个新的管理模块。
2.创建老师管理的路由结构
当我们点击导航中的「老师管理」时,页面会跳转到:/teachers/
1️⃣ 配置全局 URL
在项目的全局 config/urls.py 中,新增老师模块的入口路由,代码如下:
# 代码位置:config/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('grades/',include('grades.urls')), # 班级管理
path('students/', include('students.urls')), # 学生管理
path('teachers/', include('teachers.urls')), # 教师管理
]
2️⃣ 创建 teachers 应用的 urls.py
在 teachers 应用下新建:urls.py
并在其中定义:
- 列表页
- 新增
- 编辑
- 删除 这些路由与学生模块的结构保持一致,代码如下:
# 代码位置:teachers/urls.py
from django.urls import path
from .views import TeacherListView, TeacherCreateView, TeacherUpdateView, TeacherDeleteView
urlpatterns = [
path('', TeacherListView.as_view(), name='teachers_list'),
path('teacher/create/', TeacherCreateView.as_view(), name='teacher_create'),
path('teacher/<int:pk>/update/', TeacherUpdateView.as_view(), name='teacher_update'),
path('teacher/<int:pk>/delete/', TeacherDeleteView.as_view(), name='teacher_delete'),
]
3.设计 Teacher 模型
接下来是数据模型。
在 models.py 中创建 Teacher 模型。
核心字段设计
老师本质上也是一个系统用户,因此:
Teacher与User表:一对一关系
此外,老师本身还包含以下信息:
- 老师姓名
- 手机号
- 性别
- 出生日期
- 班级
老师与班级的关系
这里有一个业务约束:
一个班级只有一个班主任
因此:
- Teacher 与 Grade:一对一关系
Teacher模型代码如下:
from django.db import models
from django.contrib.auth.models import User
from grades.models import Grade
# Create your models here.
GENDER_CHOICES = [
('M', '男'),
('F', '女'),
]
class Teacher(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='teacher')
teacher_name = models.CharField(max_length=50, verbose_name='老师姓名')
phone_number = models.CharField(max_length=11, unique=True, verbose_name='手机号')
gender = models.CharField(max_length=1, choices=GENDER_CHOICES, verbose_name='性别')
birthday = models.DateField(verbose_name='出生日期', help_text='格式例如:2020-05-01')
grade = models.OneToOneField(Grade, on_delete=models.DO_NOTHING, verbose_name='管理班级')
def __str__(self) -> str:
return self.teacher_name
class Meta:
db_table = "teacher"
verbose_name_plural = "老师信息"
verbose_name = "老师信息"
创建迁移文件,并执行迁移操作,命令如下:
python manage.py makemigrations
python migrate
查看数据库中的tearcher表,效果如下:

4.使用 Base View 复用通用逻辑
老师管理包含多个视图类:
继续阅读完整内容
以上为免费预览。前往「Django + Vue 全栈课程」,查看后续完整讲解、案例演示和配套资料。
查看课程详情