正在用 django 做一个教学系统,其中课程的上课时间怎么存储比较好,比如微积分全周周一 1,2和周四3,4两节上课,Matlab后八周周六5~8节上课
Django模型无非就是数据库结构。以数据库设计的角度去看待Django模型,答案自然就有了。
上课时间设计一个类:
- 课程ID:ForeignKey
- 开始周数:int
- 持续周数:int
- 星期:int
- 开始时刻:int
- 持续课时:int
则示例:
- (1[外键-微积分], 1, 18, 1, 1, 2) 假设全周为1-18周
- (1[外键-微积分], 1, 18, 4, 3, 2)
- (2[外键-Matlab], 11, 8, 6, 5, 4)
结果上,让课程与上课时间两个表,呈现一对多的关系就可以了。
之所以用持续课时来存储,是因为HTML表格的rowspan
和colspan
,就是采用的“开始点-持续行列数”这个模型。展示时略有方便。
判断某时间有无课程、某时间是否在特定课程内等具体功能,如有必要则加入对应的缓存手段,全看进一步的需求而定。