def get(self,request,course_id): course = Course.objects.get(id=course_id) lesson = Lesson.objects.filter(Course=course) course_resource = CourseResource.objects.filter(Course=course) ##########################学过该课程的同学还学过########################## #利用opreation-UserCourse记录的用户行为,在用户选择学习后,需要将用户行为存储进入该数据库中 Other_User_List = UserCourse.objects.filter(Course=course) #利用课程数据遍历出所有学习该课程下的用户 Related_Courses = set() Related_Courses_id = set() for u in Other_User_List: user_courses = UserCourse.objects.filter(User_id=u.id) #遍历所有用户,并利用用户id遍历出所有的course,注意起名字不要重复了 for c in user_courses: if c.Course_id not in Related_Courses_id: #利用课程id进行去重 Related_Courses.add(c) Related_Courses_id.add(c.Course_id) ##########################实现用户学习行为的记录################################# user = request.user exit_recorder = UserCourse.objects.filter(User=user,Course=course) if not exit_recorder: user_cour = UserCourse() user_cour.Course = course user_cour.User = user user_cour.save() ################################################################################## return render(request, 'course_video.html',{'course':course,'lesson':lesson,'course_resource':course_resource,'Related_Courses':Related_Courses,})
def get(self, request, video_id): video = Video.objects.get(id=int(video_id)) course = video.lesson.course course.students += 1 course.save() # 查询用户是否关联了课程 user_cousers = UserCourse.objects.filter(user=request.user, Course=course) if not user_cousers: user_couser = UserCourse() user_couser.user = request.user user_couser.Course = course user_couser.save() # 该课的同学还学过 user_cousers = UserCourse.objects.filter(Course=course) user_ids = [user_couser.user.id for user_couser in user_cousers] # 这样的写法user_id就可以指定传入一个id,而不是一个对象 # __in 表示传入的是个list all_user_courses = UserCourse.objects.filter(user_id__in=user_ids) course_ids = [ user_couser.Course.id for user_couser in all_user_courses ] relate_courses = Course.objects.filter( id__in=course_ids).order_by("-click_num")[:5] # 资料下载 all_courseResource = CourseResource.objects.filter(course=course) return render( request, 'course-play.html', { 'course': course, 'all_courseResource': all_courseResource, 'relate_courses': relate_courses, 'video': video })