1 # coursetop_views.py 2 # ————————64PerfectCRM实现CRM课程排名详情———————— 3 #————班级学生详情——#计算#{学员ID:分数}——#计算 #{学员ID: [分数, 排名] }————# 4 #班级学生详情#计算#{学员ID:分数} 5 from django.db.models import Sum #返回数组中所有值的和 6 def get_course_grades(class_obj):#返回整个班级的成绩 7 c=models.StudyRecord.objects.filter(course_record__from_class=class_obj).values_list('student') 8 a=Sum('score')#Sum返回数组中所有值的和 #学习成绩 9 e=c.annotate(a) #annotate数据库的数据聚合函数 10 class_grade_dic=dict(e)#{1: 285, 16: 190}#{学员ID:分数} 11 print( '全班成绩:', class_grade_dic) 12 return class_grade_dic #as class_grade_dic 13 14 #班级学生详情#计算 #{学员ID: [分数, 排名] } 15 def get_course_ranking(class_grade_dic):#返回整个班级的排名数据 16 ranking_list = sorted(class_grade_dic.items(),key=lambda x:x[1],reverse=True)#进行排序后的列表#以第2个参数对比#倒序 17 print('成绩排序:',ranking_list) 18 ranking_dic = {} 19 for item in ranking_list: 20 ranking_dic[item[0]] = [item[1], ranking_list.index(item)+1] #循环添加 排名数 到 排序后的列表 21 print( '全班排名:', ranking_dic)#{1: [285, 1], 10: [280, 2], }#{学员ID: [分数, 排名] } 22 return ranking_dic 23 #————班级学生详情——#计算#{学员ID:分数}——#计算 #{学员ID: [分数, 排名] }————# 24 25 from django.contrib.auth.decorators import login_required # 登陆后页面才能访问 26 from django.shortcuts import render #页面返回 27 from crm import models #数据库 28 29 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— 30 from bpm.bpm_auxiliary.pagination import Page #分页 31 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— 32 33 #班级学生详情 34 @login_required # 登陆后页面才能访问 35 def coursetop_details(request,class_id): 36 classes_obj = models.ClassList.objects.get(id=class_id)#通过ID获取02班级表 37 enrollmentlist=classes_obj.enrollment_set.all()#通过班级ID,获取06学员报名信息表 38 39 class_grade_dic=get_course_grades(classes_obj.id)#{学员ID:分数} #全班成绩 # coursetop_tags.py 根据id 找对应的分数 40 ranking_dic=get_course_ranking(class_grade_dic)#{学员ID: [分数, 排名] } #全班排名 # coursetop_tags.py 根据id 找对应的排名 41 42 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— 43 page = Page( request.GET.get( 'p', 1 ), len( enrollmentlist ) ) # 当前页数 默认为1 #总数量 44 enrollmentlist = enrollmentlist[page.start:page.end] # 切片取当前页的数据 45 page_str = page.page_str('/bpm/coursetop_details/%s/'%(class_id)) # 总页数 传入url 46 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— 47 48 return render(request,'bpm_coursetop/coursetop_details.html',locals()) 49 # ————————64PerfectCRM实现CRM课程排名详情———————— 50 51 52 53 # ————————65PerfectCRM实现CRM课程分数排名———————— 54 #———— 班级学生详情——#计算 #{排名: (ID, 分数)}#排名查名字————# 55 def get_ranking_name(class_grade_dic): 56 lists=[] 57 ranking_list = sorted(class_grade_dic.items(),key=lambda x:x[1],reverse=True)#进行排序后的列表#以第2个参数对比#倒序 58 #ranking_list [(1, 285), (10, 280)] #按分高排序的ID顺序 59 for item in ranking_list: 60 temp={} 61 temp[ranking_list.index(item) + 1] = item # 循环添加 排名数 到 排序后的列表 62 lists.append(temp) 63 print( '排名查名字:', lists )#[{1: (1, 285)}, {2: (10, 280)}]#[{排名: (学员ID, 分数)}] 64 return lists 65 #———— 班级学生详情——#计算 #{排名: (ID, 分数)}#排名查名字————# 66 67 #班级学生详情#全班成绩排名 #通过#{排名: (ID, 分数)}#排名查名字 68 @login_required # 登陆后页面才能访问 69 def coursetop_score(request,class_id): 70 classes_obj = models.ClassList.objects.get(id=class_id)#通过ID获取02班级表 71 class_grade_dic=get_course_grades(classes_obj.id)#{学员ID:分数} #全班成绩 72 lists=get_ranking_name(class_grade_dic)#计算#[{排名: (学员ID, 分数)}] #按分高排序的ID顺序 73 74 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— 75 page = Page( request.GET.get( 'p', 1 ), len( lists ) ) # 当前页数 默认为1 #总数量 76 lists = lists[page.start:page.end] # 切片取当前页的数据 77 page_str = page.page_str('/bpm/coursetop_score/%s/'%(class_id)) # 总页数 传入url 78 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— 79 80 return render(request,'bpm_coursetop/coursetop_score.html',locals()) 81 82 # ————————65PerfectCRM实现CRM课程分数排名———————— 83 84 # ————————66PerfectCRM实现CRM课程作业排名———————— 85 #————#班级学生详情#计算#学员已交作业的数量————# 86 #班级学生详情#计算#学员已交作业的数量 87 def get_already_homework(class_id): 88 score_list = models.StudyRecord.objects.select_related().filter(student=class_id ).values_list( 'score' )#学习成绩 89 number = 0 90 for score in score_list: 91 if score != (0,): # (0,"N/A") 92 number += 1 #通过 学习成绩 不等于0 计算#已交作业的数量 93 return number 94 #————#班级学生详情#计算#学员已交作业的数量————# 95 96 #班级学生详情#学员已交作业的数量#作业查名字 97 @login_required # 登陆后页面才能访问 98 def coursetop_homework(request,class_id): 99 classes_obj = models.ClassList.objects.get(id=class_id)#通过ID获取02班级表 100 class_grade_dic=get_course_grades(classes_obj.id)#{学员ID:分数} #全班成绩 101 ranking_dic=get_course_ranking(class_grade_dic)#{学员ID: [分数, 排名] } #全班排名 102 enrollmentlist=classes_obj.enrollment_set.all()#通过班级ID,获取06学员报名信息表 103 104 dict = {}#{1: 3, 4: 2,}#{学员ID: 数量} 105 for item in enrollmentlist: 106 d = get_already_homework( item.id )#根据06学员报名信息表#学员ID #计算#学员已交作业的数量 107 dict[item.id]= d 108 109 list = sorted(dict.items(),key=lambda x:x[1])#进行排序后的列表#以第2个参数对比 110 #list[ (4, 2), (16, 2)] #list[ (学员ID, 数量)] 111 112 lists=[] #[{1: (19, 0)}, {2: (20, 0)}]#[{排名: (学员ID, 数量)}] 113 for item in list: 114 temp={} 115 temp[list.index( item ) + 1] = item # 循环添加 排名数 到 排序后的列表 #按已交作业数量少到多排序 116 lists.append(temp) 117 print('已交作业:',lists) 118 119 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— 120 page = Page( request.GET.get( 'p', 1 ), len( lists ) ) # 当前页数 默认为1 #总数量 121 lists = lists[page.start:page.end] # 切片取当前页的数据 122 page_str = page.page_str('/bpm/coursetop_homework/%s/'%(class_id)) # 总页数 传入url 123 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— 124 125 return render(request,'bpm_coursetop/coursetop_homework.html',locals()) 126 # ————————66PerfectCRM实现CRM课程作业排名———————— 127 128 # ————————67PerfectCRM实现CRM课程出勤排名———————— 129 #————#班级学生详情#学员出勤次数 #出勤次数查名字————# 130 #班级学生详情#计算#学员出勤次数 131 def get_stu_attendance(enroll_obj_id): 132 attendance_list=models.StudyRecord.objects.select_related().filter(student=enroll_obj_id).values_list('attendance') 133 number=0 134 for attendance in attendance_list: 135 if attendance == (0,) : 136 number += 1 137 return number 138 #————#班级学生详情#学员出勤次数 #出勤次数查名字————# 139 140 #班级学生详情#学员出勤次数 #出勤次数查名字 141 @login_required # 登陆后页面才能访问 142 def coursetop_attendance(request,class_id): 143 classes_obj = models.ClassList.objects.get(id=class_id)#通过ID获取02班级表 144 class_grade_dic=get_course_grades(classes_obj.id)#{学员ID:分数} #全班成绩 145 ranking_dic=get_course_ranking(class_grade_dic)#{学员ID: [分数, 排名] } #全班排名 146 enrollmentlist=classes_obj.enrollment_set.all()#通过班级ID,获取06学员报名信息表 147 148 dict = {} #{1: 3, 4: 2,}#{学员ID: 次数} 149 for item in enrollmentlist: 150 d = get_stu_attendance( item.id )#根据06学员报名信息表#学员ID #计算#学员学员出勤次数 151 dict[item.id]= d # 循环添加 {学员ID: 次数} #排序后的字典 152 153 list = sorted(dict.items(),key=lambda x:x[1])#进行排序后的列表#以第2个参数对比 #按出勤次数少到多排序 154 #list[ (4, 2), (16, 2)] #list[ (学员ID, 次数)] 155 156 lists=[]#[{1: (19, 3)}, {2: (20, 1)}]#[{排名: (学员ID, 次数)}] 157 for item in list: 158 temp={} 159 temp[list.index( item ) + 1] = item # 循环添加 排名数 #排序后的列表 160 lists.append(temp) 161 print('全班出勤',lists) 162 163 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— 164 page = Page( request.GET.get( 'p', 1 ), len( lists ) ) # 当前页数 默认为1 #总数量 165 lists = lists[page.start:page.end] # 切片取当前页的数据 166 page_str = page.page_str('/bpm/coursetop_attendance/%s/'%(class_id)) # 总页数 传入url 167 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— 168 169 return render(request,'bpm_coursetop/coursetop_attendance.html',locals()) 170 # ————————67PerfectCRM实现CRM课程出勤排名————————
1 {#coursetop_details.html#} 2 {## ————————64PerfectCRM实现CRM课程排名详情————————#} 3 {% extends 'bpm_master/bpm_sample.html' %} 4 {% load coursetop_tags %} {#计算课程排名#} 5 {% block right-container-content %} {#自定义内容开始 右边页面内容#} 6 <div class="panel-default"> 7 <div class="panel-default"> 8 <div class="panel-body"> 9 <h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} | 10 讲师QQ:{{ request.user.stu_account }} </h4> 11 <ol class="breadcrumb"> 12 <li><a href="{% url 'teacher_class' %}">我的班级</a></li> 13 <li><a href="{% url 'teacher_class_detail' classes_obj.id %}">{{ classes_obj }}</a></li> 14 <li><a href="{% url 'coursetop_details' classes_obj.id %}">课程排行</a></li> 15 </ol> 16 <table class="table table-striped table-responsive"> 17 <thead> 18 <tr> 19 <th>学员ID</th> 20 <th><a target="_blank" href="/king_admin/crm/enrollment/?enrolled_class={{ class_id }}">学员姓名</a> 21 </th> 22 <th>学员QQ</th> 23 <th>报名日期</th> 24 <th> 25 {## ————————65PerfectCRM实现CRM课程分数排名————————#} 26 <a href="{% url 'coursetop_score' classes_obj.id %}"> 27 {## ————————65PerfectCRM实现CRM课程分数排名————————#} 28 课程成绩 29 </a> 30 </th> 31 <th> 32 {## ————————65PerfectCRM实现CRM课程分数排名————————#} 33 <a href="{% url 'coursetop_score' classes_obj.id %}"> 34 {## ————————65PerfectCRM实现CRM课程分数排名————————#} 35 班级排名 36 </a> 37 </th> 38 <th> 39 {## ————————66PerfectCRM实现CRM课程作业排名————————#} 40 <a href="{% url 'coursetop_homework' classes_obj.id %}"> 41 {## ————————66PerfectCRM实现CRM课程作业排名————————#} 42 已交作业 43 </a> 44 </th> 45 <th> 46 {## ————————67PerfectCRM实现CRM课程出勤排名————————#} 47 <a href="{% url 'coursetop_attendance' classes_obj.id %}"> 48 {## ————————67PerfectCRM实现CRM课程出勤排名————————#} 49 出勤次数 50 </a> 51 </th> 52 <th>迟到次数</th> 53 <th>缺勤次数</th> 54 <th>早退次数</th> 55 </tr> 56 </thead> 57 58 59 <tbody> 60 {% for enroll_obj in enrollmentlist %} 61 <tr> 62 <td style="color: #ff0f00">{{ enroll_obj.id }}</td> 63 {# 学员id#} 64 <td>{{ enroll_obj.customer.name }}</td> 65 {# 学员姓名#} 66 <td>{{ enroll_obj.customer.qq }}</td> 67 {# 学员QQ#} 68 <td>{{ enroll_obj.date }}</td> 69 {# 报名日期#} 70 <td> 71 {% fetch_stu_course_score class_grade_dic enroll_obj.id %} {# 得到 学员 课程 分数#} 72 </td> 73 <td> 74 {% get_stu_grade_ranking ranking_dic enroll_obj.id %} {# 得到 学员 课程 排名#} 75 </td> 76 <td> 77 {% get_already_homework enroll_obj.id %}{# 已交作业#} 78 </td> 79 <td> 80 {% get_stu_attendance enroll_obj.id %} {# 得到 学员出勤次数#} 81 </td> 82 <td> 83 {% get_stu_late enroll_obj.id %} {# 得到 学员出勤次数#} 84 </td> 85 <td> 86 {% get_stu_absenteeism enroll_obj.id %} {# 得到 学员出勤次数#} 87 </td> 88 <td> 89 {% get_stu_early enroll_obj.id %} {# 得到 学员早退次数#} 90 </td> 91 </tr> 92 {% endfor %} 93 </tbody> 94 </table> 95 96 {## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#} 97 {% include 'bpm_components/page_str.html' %} 98 {## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#} 99 100 </div> 101 </div> 102 </div> 103 {% endblock %} 104 {## ————————64PerfectCRM实现CRM课程排名详情————————#}
1 {#coursetop_score.html#} 2 {## ————————65PerfectCRM实现CRM课程分数排名————————#} 3 {% extends 'bpm_master/bpm_sample.html' %} 4 {% load coursetop_tags %} 5 {% block right-container-content %} {#自定义内容开始 右边页面内容#} 6 <div class="panel-default"> 7 <div class="panel-default"> 8 <div class="panel-body"> 9 <h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} | 10 讲师QQ:{{ request.user.stu_account }} </h4> 11 <ol class="breadcrumb"> 12 <li><a href="{% url 'teacher_class' %}">我的班级</a></li> 13 <li><a href="{% url 'teacher_class_detail' classes_obj.id %}">{{ classes_obj }}</a></li> 14 <li><a href="{% url 'coursetop_score' classes_obj.id %}">分数排名</a></li> 15 </ol> 16 <table class="table table-striped table-responsive"> 17 <thead> 18 <tr> 19 <th><a href="{% url 'coursetop_details' classes_obj.id %}">学员ID</a></th> 20 <th><a target="_blank" href="/king_admin/crm/enrollment/?enrolled_class={{ class_id }}">学员姓名</a> 21 </th> 22 <th>学员QQ</th> 23 <th>报名日期</th> 24 <th>课程成绩</th> 25 <th>班级排名</th> 26 <th> 27 {## ————————66PerfectCRM实现CRM课程作业排名————————#} 28 <a href="{% url 'coursetop_homework' classes_obj.id %}"> 29 {## ————————66PerfectCRM实现CRM课程作业排名————————#} 30 已交作业 31 </a> 32 </th> 33 <th> 34 {## ————————67PerfectCRM实现CRM课程出勤排名————————#} 35 <a href="{% url 'coursetop_attendance' classes_obj.id %}"> 36 {## ————————67PerfectCRM实现CRM课程出勤排名————————#} 37 出勤次数 38 </a> 39 </th> 40 <th>迟到次数</th> 41 <th>缺勤次数</th> 42 <th>早退次数</th> 43 </tr> 44 </thead> 45 46 47 <tbody> 48 {% for enroll_objs in lists %} 49 {% for top,enroll_obj in enroll_objs.items %}{#分离提取K,V#[{排名: (学员ID, 分数)}]#} 50 {% id_enrollment enroll_obj.0 as enrollment %}{#enroll_obj.0 #学员ID#}{#通过学员ID查06学员报名信息表#} 51 <tr> 52 <td>{{ enroll_obj.0 }}</td> 53 {#学员ID#} 54 <td>{{ enrollment.customer.name }}</td> 55 {#学员姓名#} 56 <td>{{ enrollment.customer.qq }}</td> 57 {#学员QQ#} 58 <td>{{ enrollment.date }}</td> 59 {#报名日期#} 60 <td style="color: #ff0f00"> {{ enroll_obj.1 }}{#课程成绩#} </td> 61 <td style="color: #ff0f00"> 62 {{ top }}{#班级排名#} 63 </td> 64 <td>{% get_already_homework enroll_obj.0 %}</td> 65 {#已交作业#} 66 <td> 67 {% get_stu_attendance enroll_obj.0 %}{#出勤次数#} 68 </td> 69 <td> 70 {% get_stu_late enroll_obj.0 %}{#迟到次数#} 71 </td> 72 <td> 73 {% get_stu_absenteeism enroll_obj.0 %}{#缺勤次数#} 74 </td> 75 <td> 76 {% get_stu_early enroll_obj.0 %}{#早退次数#} 77 </td> 78 </tr> 79 {% endfor %} 80 {% endfor %} 81 </tbody> 82 </table> 83 84 {## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#} 85 {% include 'bpm_components/page_str.html' %} 86 {## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#} 87 88 </div> 89 </div> 90 </div> 91 {% endblock %} 92 {## ————————65PerfectCRM实现CRM课程分数排名————————#}
1 {#coursetop_homework.html#} 2 {## ————————66PerfectCRM实现CRM课程作业排名————————#} 3 {% extends 'bpm_master/bpm_sample.html' %} 4 {% load coursetop_tags %} 5 {% block right-container-content %} {#自定义内容开始 右边页面内容#} 6 <div class="panel-default"> 7 <div class="panel-default"> 8 <div class="panel-body"> 9 <h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} | 10 讲师QQ:{{ request.user.stu_account }} </h4> 11 <ol class="breadcrumb"> 12 <li><a href="{% url 'teacher_class' %}">我的班级</a></li> 13 <li><a href="{% url 'teacher_class_detail' classes_obj.id %}">{{ classes_obj }}</a></li> 14 <li><a href="{% url 'coursetop_homework' classes_obj.id %}">作业排名</a></li> 15 </ol> 16 <table class="table table-striped table-responsive"> 17 <thead> 18 <tr> 19 <th><a href="{% url 'coursetop_details' classes_obj.id %}">学员ID</a></th> 20 <th><a target="_blank" href="/king_admin/crm/enrollment/?enrolled_class={{ class_id }}">学员姓名</a> 21 </th> 22 <th>学员QQ</th> 23 <th>报名日期</th> 24 <th><a href="{% url 'coursetop_score' classes_obj.id %}">课程成绩</a></th> 25 <th><a href="{% url 'coursetop_score' classes_obj.id %}">班级排名</a></th> 26 <th>已交作业</th> 27 <th> 28 {## ————————67PerfectCRM实现CRM课程出勤排名————————#} 29 <a href="{% url 'coursetop_attendance' classes_obj.id %}"> 30 {## ————————67PerfectCRM实现CRM课程出勤排名————————#} 31 出勤次数 32 </a> 33 </th> 34 <th>迟到次数</th> 35 <th>缺勤次数</th> 36 <th>早退次数</th> 37 </tr> 38 </thead> 39 40 41 <tbody> 42 {% for enroll_objs in lists %} 43 {% for top,enroll_obj in enroll_objs.items %}{#分离提取K,V#[{排名: (学员ID, 分数)}]#} 44 {% id_enrollment enroll_obj.0 as enrollment %}{#enroll_obj.0 #学员ID#}{#通过学员ID查06学员报名信息表#} 45 <tr> 46 <td>{{ enroll_obj.0 }}</td> 47 {#学员id#} 48 <td>{{ enrollment.customer.name }}</td> 49 {#学员姓名#} 50 <td>{{ enrollment.customer.qq }}</td> 51 {#学员QQ#} 52 <td>{{ enrollment.date }}</td> 53 {#报名日期#} 54 <td> 55 {% fetch_stu_course_score class_grade_dic enroll_obj.0 %} {# 获取 学员 课程 分数#} 56 </td> 57 <td> 58 {% get_stu_grade_ranking ranking_dic enroll_obj.0 %} {# 得到 学员 年级 排名#} 59 </td> 60 <td style="color: #ff0f00"> 61 {% get_already_homework enroll_obj.0 %}{#已交作业#} 62 </td> 63 <td> 64 {% get_stu_attendance enroll_obj.0 %}{#出勤次数#} 65 </td> 66 <td> 67 {% get_stu_late enroll_obj.0 %}{#迟到次数#} 68 </td> 69 <td> 70 {% get_stu_absenteeism enroll_obj.0 %}{#缺勤次数#} 71 </td> 72 <td> 73 {% get_stu_early enroll_obj.0 %}{#早退次数#} 74 </td> 75 </tr> 76 {% endfor %} 77 {% endfor %} 78 </tbody> 79 </table> 80 81 82 {## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#} 83 {% include 'bpm_components/page_str.html' %} 84 {## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#} 85 86 </div> 87 </div> 88 </div> 89 {% endblock %} 90 {## ————————66PerfectCRM实现CRM课程作业排名————————#}
1 {#coursetop_attendance.html#} 2 {## ————————67PerfectCRM实现CRM课程出勤排名————————#} 3 {% extends 'bpm_master/bpm_sample.html' %} 4 {% load coursetop_tags %} 5 {% block right-container-content %} {#自定义内容开始 右边页面内容#} 6 <div class="panel-default"> 7 <div class="panel-default"> 8 <div class="panel-body"> 9 <h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} | 10 讲师QQ:{{ request.user.stu_account }} </h4> 11 <ol class="breadcrumb"> 12 <li><a href="{% url 'teacher_class' %}">我的班级</a></li> 13 <li><a href="{% url 'teacher_class_detail' classes_obj.id %}">{{ classes_obj }}</a></li> 14 <li><a href="{% url 'coursetop_attendance' classes_obj.id %}">出勤排名</a></li> 15 </ol> 16 <table class="table table-striped table-responsive"> 17 <thead> 18 <tr> 19 <th><a href="{% url 'coursetop_details' classes_obj.id %}">学员ID</a></th> 20 <th><a target="_blank" href="/king_admin/crm/enrollment/?enrolled_class={{ class_id }}">学员姓名</a> 21 </th> 22 <th>学员QQ</th> 23 <th>报名日期</th> 24 <th><a href="{% url 'coursetop_score' classes_obj.id %}">课程成绩</a></th> 25 <th><a href="{% url 'coursetop_score' classes_obj.id %}">班级排名</a></th> 26 <th><a href="{% url 'coursetop_homework' classes_obj.id %}">已交作业</a></th> 27 <th>出勤次数</th> 28 <th>迟到次数</th> 29 <th>缺勤次数</th> 30 <th>早退次数</th> 31 </tr> 32 </thead> 33 34 35 <tbody> 36 {% for enroll_objs in lists %} 37 {% for top,enroll_obj in enroll_objs.items %}{#分离提取K,V#[{排名: (学员ID, 分数)}]#} 38 {% id_enrollment enroll_obj.0 as enrollment %}{#enroll_obj.0 #学员ID#}{#通过学员ID查06学员报名信息表#} 39 <tr> 40 <td>{{ enroll_obj.0 }}</td> 41 {#学员id#} 42 <td>{{ enrollment.customer.name }}</td> 43 {#学员姓名#} 44 <td>{{ enrollment.customer.qq }}</td> 45 {#学员QQ#} 46 <td>{{ enrollment.date }}</td> 47 {#报名日期#} 48 <td> 49 {% fetch_stu_course_score class_grade_dic enroll_obj.0 %} {# 获取 学员 课程 分数#} 50 </td> 51 <td> 52 {% get_stu_grade_ranking ranking_dic enroll_obj.0 %} {# 得到 学员 年级 排名#} 53 </td> 54 <td> 55 {% get_already_homework enroll_obj.0 %}{#已交作业#} 56 </td> 57 <td style="color: #ff0f00"> 58 {% get_stu_attendance enroll_obj.0 %}{#出勤次数#} 59 </td> 60 <td> 61 {% get_stu_late enroll_obj.0 %}{#迟到次数#} 62 </td> 63 <td> 64 {% get_stu_absenteeism enroll_obj.0 %}{#缺勤次数#} 65 </td> 66 <td> 67 {% get_stu_early enroll_obj.0 %}{#早退次数#} 68 </td> 69 </tr> 70 {% endfor %} 71 {% endfor %} 72 </tbody> 73 </table> 74 75 {## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#} 76 {% include 'bpm_components/page_str.html' %} 77 {## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#} 78 79 80 </div> 81 </div> 82 </div> 83 {% endblock %} 84 {## ————————67PerfectCRM实现CRM课程出勤排名————————#}