首先,用户要学习当前的课程的入口就是在课程详情的界面点击我要学习按钮,点击这个按钮之后进入课程章节页面,所以在点击这个按钮的时候就更新下usercourse
这张表。
所以在UserVideoView
这个视图函数中:
还有一个点就是我们要获得当前的课程学习人数有两种方法,一种是上面这样在视图函数中进行计算,每一次更新了UserCourse
这个数据表之后,就将课程对应的学习人数learning_nums
加1,然后更新Course
这张表。对应的前端文件:
还有一种是在models中写函数计算:
这样的话在前端的代码要修改成:
这两种写法都是正确的,但是从效率上来看,第一种效率更高。
原因:
- 第一种每次更新
UserCourse
这个数据表之后,只是对一个值做一次加法运算,后面如果不发生变化(比如另一个用户学习了这门课程),这个数字是不变的,每次通过对象取出这个数据即可 - 而第二种做法,不管每次访问课程详情页面的时候有没有发生变化,都会遍历一遍
UserCourse
这张数据表,获取学习当前课程的用户,并且使用count()函数做累加计算,所以相对效率比较低。