# coursetop_views.py
# ————————64PerfectCRM实现CRM课程排名详情————————
#————班级学生详情——#计算#{学员ID:分数}——#计算 #{学员ID: [分数, 排名] }————#
#班级学生详情#计算#{学员ID:分数}
from django.db.models import Sum #返回数组中所有值的和
def get_course_grades(class_obj):#返回整个班级的成绩
c=models.StudyRecord.objects.filter(course_record__from_class=class_obj).values_list('student')
a=Sum('score')#Sum返回数组中所有值的和 #学习成绩
e=c.annotate(a) #annotate数据库的数据聚合函数
class_grade_dic=dict(e)#{1: 285, 16: 190}#{学员ID:分数}
print( '全班成绩:', class_grade_dic)
return class_grade_dic #as class_grade_dic #班级学生详情#计算 #{学员ID: [分数, 排名] }
def get_course_ranking(class_grade_dic):#返回整个班级的排名数据
ranking_list = sorted(class_grade_dic.items(),key=lambda x:x[1],reverse=True)#进行排序后的列表#以第2个参数对比#倒序
print('成绩排序:',ranking_list)
ranking_dic = {}
for item in ranking_list:
ranking_dic[item[0]] = [item[1], ranking_list.index(item)+1] #循环添加 排名数 到 排序后的列表
print( '全班排名:', ranking_dic)#{1: [285, 1], 10: [280, 2], }#{学员ID: [分数, 排名] }
return ranking_dic
#————班级学生详情——#计算#{学员ID:分数}——#计算 #{学员ID: [分数, 排名] }————# from django.contrib.auth.decorators import login_required # 登陆后页面才能访问
from django.shortcuts import render #页面返回
from crm import models #数据库 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————
from bpm.bpm_auxiliary.pagination import Page #分页
# ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— #班级学生详情
@login_required # 登陆后页面才能访问
def coursetop_details(request,class_id):
classes_obj = models.ClassList.objects.get(id=class_id)#通过ID获取02班级表
enrollmentlist=classes_obj.enrollment_set.all()#通过班级ID,获取06学员报名信息表 class_grade_dic=get_course_grades(classes_obj.id)#{学员ID:分数} #全班成绩 # coursetop_tags.py 根据id 找对应的分数
ranking_dic=get_course_ranking(class_grade_dic)#{学员ID: [分数, 排名] } #全班排名 # coursetop_tags.py 根据id 找对应的排名 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————
page = Page( request.GET.get( 'p', 1 ), len( enrollmentlist ) ) # 当前页数 默认为1 #总数量
enrollmentlist = enrollmentlist[page.start:page.end] # 切片取当前页的数据
page_str = page.page_str('/bpm/coursetop_details/%s/'%(class_id)) # 总页数 传入url
# ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— return render(request,'bpm_coursetop/coursetop_details.html',locals())
# ————————64PerfectCRM实现CRM课程排名详情———————— # ————————65PerfectCRM实现CRM课程分数排名————————
#———— 班级学生详情——#计算 #{排名: (ID, 分数)}#排名查名字————#
def get_ranking_name(class_grade_dic):
lists=[]
ranking_list = sorted(class_grade_dic.items(),key=lambda x:x[1],reverse=True)#进行排序后的列表#以第2个参数对比#倒序
#ranking_list [(1, 285), (10, 280)] #按分高排序的ID顺序
for item in ranking_list:
temp={}
temp[ranking_list.index(item) + 1] = item # 循环添加 排名数 到 排序后的列表
lists.append(temp)
print( '排名查名字:', lists )#[{1: (1, 285)}, {2: (10, 280)}]#[{排名: (学员ID, 分数)}]
return lists
#———— 班级学生详情——#计算 #{排名: (ID, 分数)}#排名查名字————# #班级学生详情#全班成绩排名 #通过#{排名: (ID, 分数)}#排名查名字
@login_required # 登陆后页面才能访问
def coursetop_score(request,class_id):
classes_obj = models.ClassList.objects.get(id=class_id)#通过ID获取02班级表
class_grade_dic=get_course_grades(classes_obj.id)#{学员ID:分数} #全班成绩
lists=get_ranking_name(class_grade_dic)#计算#[{排名: (学员ID, 分数)}] #按分高排序的ID顺序 # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————
page = Page( request.GET.get( 'p', 1 ), len( lists ) ) # 当前页数 默认为1 #总数量
lists = lists[page.start:page.end] # 切片取当前页的数据
page_str = page.page_str('/bpm/coursetop_score/%s/'%(class_id)) # 总页数 传入url
# ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— return render(request,'bpm_coursetop/coursetop_score.html',locals()) # ————————65PerfectCRM实现CRM课程分数排名———————— # ————————66PerfectCRM实现CRM课程作业排名————————
#————#班级学生详情#计算#学员已交作业的数量————#
#班级学生详情#计算#学员已交作业的数量
def get_already_homework(class_id):
score_list = models.StudyRecord.objects.select_related().filter(student=class_id ).values_list( 'score' )#学习成绩
number = 0
for score in score_list:
if score != (0,): # (0,"N/A")
number += 1 #通过 学习成绩 不等于0 计算#已交作业的数量
return number
#————#班级学生详情#计算#学员已交作业的数量————# #班级学生详情#学员已交作业的数量#作业查名字
@login_required # 登陆后页面才能访问
def coursetop_homework(request,class_id):
classes_obj = models.ClassList.objects.get(id=class_id)#通过ID获取02班级表
class_grade_dic=get_course_grades(classes_obj.id)#{学员ID:分数} #全班成绩
ranking_dic=get_course_ranking(class_grade_dic)#{学员ID: [分数, 排名] } #全班排名
enrollmentlist=classes_obj.enrollment_set.all()#通过班级ID,获取06学员报名信息表 dict = {}#{1: 3, 4: 2,}#{学员ID: 数量}
for item in enrollmentlist:
d = get_already_homework( item.id )#根据06学员报名信息表#学员ID #计算#学员已交作业的数量
dict[item.id]= d list = sorted(dict.items(),key=lambda x:x[1])#进行排序后的列表#以第2个参数对比
#list[ (4, 2), (16, 2)] #list[ (学员ID, 数量)] lists=[] #[{1: (19, 0)}, {2: (20, 0)}]#[{排名: (学员ID, 数量)}]
for item in list:
temp={}
temp[list.index( item ) + 1] = item # 循环添加 排名数 到 排序后的列表 #按已交作业数量少到多排序
lists.append(temp)
print('已交作业:',lists) # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————
page = Page( request.GET.get( 'p', 1 ), len( lists ) ) # 当前页数 默认为1 #总数量
lists = lists[page.start:page.end] # 切片取当前页的数据
page_str = page.page_str('/bpm/coursetop_homework/%s/'%(class_id)) # 总页数 传入url
# ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— return render(request,'bpm_coursetop/coursetop_homework.html',locals())
# ————————66PerfectCRM实现CRM课程作业排名———————— # ————————67PerfectCRM实现CRM课程出勤排名————————
#————#班级学生详情#学员出勤次数 #出勤次数查名字————#
#班级学生详情#计算#学员出勤次数
def get_stu_attendance(enroll_obj_id):
attendance_list=models.StudyRecord.objects.select_related().filter(student=enroll_obj_id).values_list('attendance')
number=0
for attendance in attendance_list:
if attendance == (0,) :
number += 1
return number
#————#班级学生详情#学员出勤次数 #出勤次数查名字————# #班级学生详情#学员出勤次数 #出勤次数查名字
@login_required # 登陆后页面才能访问
def coursetop_attendance(request,class_id):
classes_obj = models.ClassList.objects.get(id=class_id)#通过ID获取02班级表
class_grade_dic=get_course_grades(classes_obj.id)#{学员ID:分数} #全班成绩
ranking_dic=get_course_ranking(class_grade_dic)#{学员ID: [分数, 排名] } #全班排名
enrollmentlist=classes_obj.enrollment_set.all()#通过班级ID,获取06学员报名信息表 dict = {} #{1: 3, 4: 2,}#{学员ID: 次数}
for item in enrollmentlist:
d = get_stu_attendance( item.id )#根据06学员报名信息表#学员ID #计算#学员学员出勤次数
dict[item.id]= d # 循环添加 {学员ID: 次数} #排序后的字典 list = sorted(dict.items(),key=lambda x:x[1])#进行排序后的列表#以第2个参数对比 #按出勤次数少到多排序
#list[ (4, 2), (16, 2)] #list[ (学员ID, 次数)] lists=[]#[{1: (19, 3)}, {2: (20, 1)}]#[{排名: (学员ID, 次数)}]
for item in list:
temp={}
temp[list.index( item ) + 1] = item # 循环添加 排名数 #排序后的列表
lists.append(temp)
print('全班出勤',lists) # ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————
page = Page( request.GET.get( 'p', 1 ), len( lists ) ) # 当前页数 默认为1 #总数量
lists = lists[page.start:page.end] # 切片取当前页的数据
page_str = page.page_str('/bpm/coursetop_attendance/%s/'%(class_id)) # 总页数 传入url
# ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页———————— return render(request,'bpm_coursetop/coursetop_attendance.html',locals())
# ————————67PerfectCRM实现CRM课程出勤排名————————

# coursetop_views.py

 {#coursetop_details.html#}
{## ————————64PerfectCRM实现CRM课程排名详情————————#}
{% extends 'bpm_master/bpm_sample.html' %}
{% load coursetop_tags %} {#计算课程排名#}
{% block right-container-content %} {#自定义内容开始 右边页面内容#}
<div class="panel-default">
<div class="panel-default">
<div class="panel-body">
<h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} |
讲师QQ:{{ request.user.stu_account }} </h4>
<ol class="breadcrumb">
<li><a href="{% url 'teacher_class' %}">我的班级</a></li>
<li><a href="{% url 'teacher_class_detail' classes_obj.id %}">{{ classes_obj }}</a></li>
<li><a href="{% url 'coursetop_details' classes_obj.id %}">课程排行</a></li>
</ol>
<table class="table table-striped table-responsive">
<thead>
<tr>
<th>学员ID</th>
<th><a target="_blank" href="/king_admin/crm/enrollment/?enrolled_class={{ class_id }}">学员姓名</a>
</th>
<th>学员QQ</th>
<th>报名日期</th>
<th>
{## ————————65PerfectCRM实现CRM课程分数排名————————#}
<a href="{% url 'coursetop_score' classes_obj.id %}">
{## ————————65PerfectCRM实现CRM课程分数排名————————#}
课程成绩
</a>
</th>
<th>
{## ————————65PerfectCRM实现CRM课程分数排名————————#}
<a href="{% url 'coursetop_score' classes_obj.id %}">
{## ————————65PerfectCRM实现CRM课程分数排名————————#}
班级排名
</a>
</th>
<th>
{## ————————66PerfectCRM实现CRM课程作业排名————————#}
<a href="{% url 'coursetop_homework' classes_obj.id %}">
{## ————————66PerfectCRM实现CRM课程作业排名————————#}
已交作业
</a>
</th>
<th>
{## ————————67PerfectCRM实现CRM课程出勤排名————————#}
<a href="{% url 'coursetop_attendance' classes_obj.id %}">
{## ————————67PerfectCRM实现CRM课程出勤排名————————#}
出勤次数
</a>
</th>
<th>迟到次数</th>
<th>缺勤次数</th>
<th>早退次数</th>
</tr>
</thead> <tbody>
{% for enroll_obj in enrollmentlist %}
<tr>
<td style="color: #ff0f00">{{ enroll_obj.id }}</td>
{# 学员id#}
<td>{{ enroll_obj.customer.name }}</td>
{# 学员姓名#}
<td>{{ enroll_obj.customer.qq }}</td>
{# 学员QQ#}
<td>{{ enroll_obj.date }}</td>
{# 报名日期#}
<td>
{% fetch_stu_course_score class_grade_dic enroll_obj.id %} {# 得到 学员 课程 分数#}
</td>
<td>
{% get_stu_grade_ranking ranking_dic enroll_obj.id %} {# 得到 学员 课程 排名#}
</td>
<td>
{% get_already_homework enroll_obj.id %}{# 已交作业#}
</td>
<td>
{% get_stu_attendance enroll_obj.id %} {# 得到 学员出勤次数#}
</td>
<td>
{% get_stu_late enroll_obj.id %} {# 得到 学员出勤次数#}
</td>
<td>
{% get_stu_absenteeism enroll_obj.id %} {# 得到 学员出勤次数#}
</td>
<td>
{% get_stu_early enroll_obj.id %} {# 得到 学员早退次数#}
</td>
</tr>
{% endfor %}
</tbody>
</table> {## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#}
{% include 'bpm_components/page_str.html' %}
{## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#} </div>
</div>
</div>
{% endblock %}
{## ————————64PerfectCRM实现CRM课程排名详情————————#}

{#coursetop_details.html#}

 {#coursetop_score.html#}
{## ————————65PerfectCRM实现CRM课程分数排名————————#}
{% extends 'bpm_master/bpm_sample.html' %}
{% load coursetop_tags %}
{% block right-container-content %} {#自定义内容开始 右边页面内容#}
<div class="panel-default">
<div class="panel-default">
<div class="panel-body">
<h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} |
讲师QQ:{{ request.user.stu_account }} </h4>
<ol class="breadcrumb">
<li><a href="{% url 'teacher_class' %}">我的班级</a></li>
<li><a href="{% url 'teacher_class_detail' classes_obj.id %}">{{ classes_obj }}</a></li>
<li><a href="{% url 'coursetop_score' classes_obj.id %}">分数排名</a></li>
</ol>
<table class="table table-striped table-responsive">
<thead>
<tr>
<th><a href="{% url 'coursetop_details' classes_obj.id %}">学员ID</a></th>
<th><a target="_blank" href="/king_admin/crm/enrollment/?enrolled_class={{ class_id }}">学员姓名</a>
</th>
<th>学员QQ</th>
<th>报名日期</th>
<th>课程成绩</th>
<th>班级排名</th>
<th>
{## ————————66PerfectCRM实现CRM课程作业排名————————#}
<a href="{% url 'coursetop_homework' classes_obj.id %}">
{## ————————66PerfectCRM实现CRM课程作业排名————————#}
已交作业
</a>
</th>
<th>
{## ————————67PerfectCRM实现CRM课程出勤排名————————#}
<a href="{% url 'coursetop_attendance' classes_obj.id %}">
{## ————————67PerfectCRM实现CRM课程出勤排名————————#}
出勤次数
</a>
</th>
<th>迟到次数</th>
<th>缺勤次数</th>
<th>早退次数</th>
</tr>
</thead> <tbody>
{% for enroll_objs in lists %}
{% for top,enroll_obj in enroll_objs.items %}{#分离提取K,V#[{排名: (学员ID, 分数)}]#}
{% id_enrollment enroll_obj.0 as enrollment %}{#enroll_obj.0 #学员ID#}{#通过学员ID查06学员报名信息表#}
<tr>
<td>{{ enroll_obj.0 }}</td>
{#学员ID#}
<td>{{ enrollment.customer.name }}</td>
{#学员姓名#}
<td>{{ enrollment.customer.qq }}</td>
{#学员QQ#}
<td>{{ enrollment.date }}</td>
{#报名日期#}
<td style="color: #ff0f00"> {{ enroll_obj.1 }}{#课程成绩#} </td>
<td style="color: #ff0f00">
{{ top }}{#班级排名#}
</td>
<td>{% get_already_homework enroll_obj.0 %}</td>
{#已交作业#}
<td>
{% get_stu_attendance enroll_obj.0 %}{#出勤次数#}
</td>
<td>
{% get_stu_late enroll_obj.0 %}{#迟到次数#}
</td>
<td>
{% get_stu_absenteeism enroll_obj.0 %}{#缺勤次数#}
</td>
<td>
{% get_stu_early enroll_obj.0 %}{#早退次数#}
</td>
</tr>
{% endfor %}
{% endfor %}
</tbody>
</table> {## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#}
{% include 'bpm_components/page_str.html' %}
{## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#} </div>
</div>
</div>
{% endblock %}
{## ————————65PerfectCRM实现CRM课程分数排名————————#}

{#coursetop_score.html#}

 {#coursetop_homework.html#}
{## ————————66PerfectCRM实现CRM课程作业排名————————#}
{% extends 'bpm_master/bpm_sample.html' %}
{% load coursetop_tags %}
{% block right-container-content %} {#自定义内容开始 右边页面内容#}
<div class="panel-default">
<div class="panel-default">
<div class="panel-body">
<h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} |
讲师QQ:{{ request.user.stu_account }} </h4>
<ol class="breadcrumb">
<li><a href="{% url 'teacher_class' %}">我的班级</a></li>
<li><a href="{% url 'teacher_class_detail' classes_obj.id %}">{{ classes_obj }}</a></li>
<li><a href="{% url 'coursetop_homework' classes_obj.id %}">作业排名</a></li>
</ol>
<table class="table table-striped table-responsive">
<thead>
<tr>
<th><a href="{% url 'coursetop_details' classes_obj.id %}">学员ID</a></th>
<th><a target="_blank" href="/king_admin/crm/enrollment/?enrolled_class={{ class_id }}">学员姓名</a>
</th>
<th>学员QQ</th>
<th>报名日期</th>
<th><a href="{% url 'coursetop_score' classes_obj.id %}">课程成绩</a></th>
<th><a href="{% url 'coursetop_score' classes_obj.id %}">班级排名</a></th>
<th>已交作业</th>
<th>
{## ————————67PerfectCRM实现CRM课程出勤排名————————#}
<a href="{% url 'coursetop_attendance' classes_obj.id %}">
{## ————————67PerfectCRM实现CRM课程出勤排名————————#}
出勤次数
</a>
</th>
<th>迟到次数</th>
<th>缺勤次数</th>
<th>早退次数</th>
</tr>
</thead> <tbody>
{% for enroll_objs in lists %}
{% for top,enroll_obj in enroll_objs.items %}{#分离提取K,V#[{排名: (学员ID, 分数)}]#}
{% id_enrollment enroll_obj.0 as enrollment %}{#enroll_obj.0 #学员ID#}{#通过学员ID查06学员报名信息表#}
<tr>
<td>{{ enroll_obj.0 }}</td>
{#学员id#}
<td>{{ enrollment.customer.name }}</td>
{#学员姓名#}
<td>{{ enrollment.customer.qq }}</td>
{#学员QQ#}
<td>{{ enrollment.date }}</td>
{#报名日期#}
<td>
{% fetch_stu_course_score class_grade_dic enroll_obj.0 %} {# 获取 学员 课程 分数#}
</td>
<td>
{% get_stu_grade_ranking ranking_dic enroll_obj.0 %} {# 得到 学员 年级 排名#}
</td>
<td style="color: #ff0f00">
{% get_already_homework enroll_obj.0 %}{#已交作业#}
</td>
<td>
{% get_stu_attendance enroll_obj.0 %}{#出勤次数#}
</td>
<td>
{% get_stu_late enroll_obj.0 %}{#迟到次数#}
</td>
<td>
{% get_stu_absenteeism enroll_obj.0 %}{#缺勤次数#}
</td>
<td>
{% get_stu_early enroll_obj.0 %}{#早退次数#}
</td>
</tr>
{% endfor %}
{% endfor %}
</tbody>
</table> {## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#}
{% include 'bpm_components/page_str.html' %}
{## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#} </div>
</div>
</div>
{% endblock %}
{## ————————66PerfectCRM实现CRM课程作业排名————————#}

{#coursetop_homework.html#}

 {#coursetop_attendance.html#}
{## ————————67PerfectCRM实现CRM课程出勤排名————————#}
{% extends 'bpm_master/bpm_sample.html' %}
{% load coursetop_tags %}
{% block right-container-content %} {#自定义内容开始 右边页面内容#}
<div class="panel-default">
<div class="panel-default">
<div class="panel-body">
<h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} |
讲师QQ:{{ request.user.stu_account }} </h4>
<ol class="breadcrumb">
<li><a href="{% url 'teacher_class' %}">我的班级</a></li>
<li><a href="{% url 'teacher_class_detail' classes_obj.id %}">{{ classes_obj }}</a></li>
<li><a href="{% url 'coursetop_attendance' classes_obj.id %}">出勤排名</a></li>
</ol>
<table class="table table-striped table-responsive">
<thead>
<tr>
<th><a href="{% url 'coursetop_details' classes_obj.id %}">学员ID</a></th>
<th><a target="_blank" href="/king_admin/crm/enrollment/?enrolled_class={{ class_id }}">学员姓名</a>
</th>
<th>学员QQ</th>
<th>报名日期</th>
<th><a href="{% url 'coursetop_score' classes_obj.id %}">课程成绩</a></th>
<th><a href="{% url 'coursetop_score' classes_obj.id %}">班级排名</a></th>
<th><a href="{% url 'coursetop_homework' classes_obj.id %}">已交作业</a></th>
<th>出勤次数</th>
<th>迟到次数</th>
<th>缺勤次数</th>
<th>早退次数</th>
</tr>
</thead> <tbody>
{% for enroll_objs in lists %}
{% for top,enroll_obj in enroll_objs.items %}{#分离提取K,V#[{排名: (学员ID, 分数)}]#}
{% id_enrollment enroll_obj.0 as enrollment %}{#enroll_obj.0 #学员ID#}{#通过学员ID查06学员报名信息表#}
<tr>
<td>{{ enroll_obj.0 }}</td>
{#学员id#}
<td>{{ enrollment.customer.name }}</td>
{#学员姓名#}
<td>{{ enrollment.customer.qq }}</td>
{#学员QQ#}
<td>{{ enrollment.date }}</td>
{#报名日期#}
<td>
{% fetch_stu_course_score class_grade_dic enroll_obj.0 %} {# 获取 学员 课程 分数#}
</td>
<td>
{% get_stu_grade_ranking ranking_dic enroll_obj.0 %} {# 得到 学员 年级 排名#}
</td>
<td>
{% get_already_homework enroll_obj.0 %}{#已交作业#}
</td>
<td style="color: #ff0f00">
{% get_stu_attendance enroll_obj.0 %}{#出勤次数#}
</td>
<td>
{% get_stu_late enroll_obj.0 %}{#迟到次数#}
</td>
<td>
{% get_stu_absenteeism enroll_obj.0 %}{#缺勤次数#}
</td>
<td>
{% get_stu_early enroll_obj.0 %}{#早退次数#}
</td>
</tr>
{% endfor %}
{% endfor %}
</tbody>
</table> {## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#}
{% include 'bpm_components/page_str.html' %}
{## ————————70PerfectCRM实现CRM业务流程(bpm)课程排行分页————————#} </div>
</div>
</div>
{% endblock %}
{## ————————67PerfectCRM实现CRM课程出勤排名————————#}

{#coursetop_attendance.html#}


如果感觉本章博客对您有帮助,请尽情打赏吧!

Django项目:CRM(客户关系管理系统)--80--70PerfectCRM实现CRM业务流程(bpm)课程排行分页的更多相关文章

  1. Django项目:CRM(客户关系管理系统)--84--74PerfectCRM实现CRM权限和权限组限制访问URL

    #models.py # ————————01PerfectCRM基本配置ADMIN———————— from django.db import models # Create your models ...

  2. Django CRM客户关系管理系统

    CRM需求分析 随着信息化时代带来的科技创新,CRM客户关系管理系统带来的效益在已经成为很多企业提高竞争优势的一分部,CRM客户关系管理系统将企业管理和客户关系管理集成到统一的平台,其系统功能主要体现 ...

  3. Django项目:CRM(客户关系管理系统)--85--75PerfectCRM实现CRM扩展权限

    # sales_urls.py # ————————47PerfectCRM实现CRM客户报名流程———————— from django.conf.urls import url from bpm. ...

  4. Django项目:CRM(客户关系管理系统)--70--60PerfectCRM实现CRM学生上课记录

    #urls.py """PerfectCRM URL Configuration The `urlpatterns` list routes URLs to views. ...

  5. Django项目:CRM(客户关系管理系统)--78--68PerfectCRM实现CRM业务流程(bpm)报名缴费分页

    # pagination.py # ————————68PerfectCRM实现CRM业务流程(bpm)报名缴费分页———————— from django.utils.safestring impo ...

  6. Django项目:CRM(客户关系管理系统)--74--64PerfectCRM实现CRM课程排名详情

    #urls.py """PerfectCRM URL Configuration The `urlpatterns` list routes URLs to views. ...

  7. Django项目:CRM(客户关系管理系统)--72--62PerfectCRM实现CRM讲师讲课记录

    #urls.py """PerfectCRM URL Configuration The `urlpatterns` list routes URLs to views. ...

  8. Django项目:CRM(客户关系管理系统)--79--69PerfectCRM实现CRM业务流程(bpm)学生讲师分页

    # student_views.py # ————————60PerfectCRM实现CRM学生上课记录———————— from django.shortcuts import render #页面 ...

  9. CRM客户关系管理系统-需求概设和详设

    大概设计 大概设计就是对需求进行一个整体性分析,把需要实现的功能都列出来,对于客户关系管理系统,我们需要从角色出发,从而确定有哪些需求,最好是画个思维导图 首先我们是为培训学校这么一个场景来开发的,所 ...

随机推荐

  1. HTML 5 基础

    HTML 参考手册 HTML 5 视频 controls 属性供添加播放.暂停和音量控件. <video src="movie.ogg" width="320&qu ...

  2. 概率dp——逆推期望+循环迭代zoj3329

    首先要推出dp[i]的期望方程,会发现每一项都和dp[0]相关, 那我们将dp[i]设为和dp[0]有关的式子dp[i]=a[i]*dp[0]+b[i],然后再回代到原来的期望方程里 然后进行整理,可 ...

  3. NOI2014

    听说14,15年的题是最简单的,然后除了提答以外的不那么水的题都是以前讲过.做过的,都比较好想到,但是我实现起来却有各种Bug,也完全不能在5h里AC...太弱了 [NOI2014]起床困难综合症 纯 ...

  4. 牛客多校第五场 H subsequence 2 拓扑排序

    题意: 给你长度最长为1000的字符串,这个字符串中最多有10种字母,每次给你两种字母,输出这两种字母在字符串中的相对位置,问你这个字符串原本是什么样子,如果不存在则输出-1 题解: 把整个字符串看作 ...

  5. timestamp的自动更新 ON UPDATE CURRENT_TIMESTAMP

    最近有一个关于MySQL版本升级的事,涉及到一些关于时间类型的细节问题需要查明,因此到官网找到相关文章,翻出来比较方便自己理解,博客这里也贴一下. 参考官网网址: https://dev.mysql. ...

  6. 《Python之BMI计算》

    <Python之BMI计算> 前段时间写了个 BMI 因为刚刚开始学 有几个错误 第一个: 厘米我当时也没注意因为觉得去掉0.00的话后面1866666666是正确的BMI值 刚刚去看看去 ...

  7. python列表的常用操作

    列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型.比如JS中的数 组, java中的数组等等. 它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各种数据类型: 列表是p ...

  8. <Django>第一篇:入门的例子

    1.MVT框架 Model(模型):数据库交互相关.在这部分一般需要进行三个操作: (1)面向数据库:模型对象.列表 (2)定义模型类:指定属性及类型,确定表结构(设计表),需要迁移(生成表) (3) ...

  9. HDU - 2222,HDU - 2896,HDU - 3065,ZOJ - 3430 AC自动机求文本串和模式串信息(模板题)

    最近正在学AC自动机,按照惯例需要刷一套kuangbin的AC自动机专题巩固 在网上看过很多模板,感觉kuangbin大神的模板最为简洁,于是就选择了用kuangbin大神的模板. AC自动机其实就是 ...

  10. iOS开发系列-Block本质篇

    概述 在iOS开发中Block使用比较广泛,对于使用以及一些常规的技术点这里不再赘述,主要利用C++角度分析Block内部数据底层实现,解开开发中为什么这样编写代码解决问题. Block底层结构窥探 ...