Django项目:CRM(客户关系管理系统)--69--59PerfectCRM实现king_admin批量生成上课记录
Posted ujq3
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django项目:CRM(客户关系管理系统)--69--59PerfectCRM实现king_admin批量生成上课记录相关的知识,希望对你有一定的参考价值。
1 # kingadmin.py 2 # ————————04PerfectCRM实现King_admin注册功能———————— 3 from crm import models 4 #print("kingadmin crm",models.Customer) 5 6 # ————————05PerfectCRM实现King_admin注册功能获取内存———————— 7 # from king_admin.base_admin import register,BaseAdmin 8 from king_admin.base_admin import site,BaseAdmin 9 # ————————05PerfectCRM实现King_admin注册功能获取内存———————— 10 11 # ————————24PerfectCRM实现King_admin自定义操作数据———————— 12 from django.shortcuts import render 13 # ————————24PerfectCRM实现King_admin自定义操作数据———————— 14 15 # ————————28PerfectCRM实现King_admin编辑限制———————— 16 from django.forms import ValidationError 17 from django.shortcuts import render,redirect 18 # ————————28PerfectCRM实现King_admin编辑限制———————— 19 20 #04客户信息表 21 class CustomerAdmin(BaseAdmin):#定制Djanago admin 22 # ————————54PerfectCRM实现CRM客户报名链接———————— 23 # list_display = (‘id‘, ‘qq‘, ‘source‘, ‘consultant‘, ‘content‘, ‘date‘) # 显示字段表头 24 list_display = (‘id‘, ‘qq‘, ‘source‘, ‘consultant‘, ‘content‘, ‘date‘,‘status‘,‘enroll‘) # 显示字段表头 25 # ————————54PerfectCRM实现CRM客户报名链接———————— 26 # ————————11PerfectCRM实现King_admin分页显示条数———————— 27 list_per_page = 2 #分页条数 # 默认分页条数10 28 # ————————11PerfectCRM实现King_admin分页显示条数———————— 29 # ————————16PerfectCRM实现King_admin日期过滤———————— 30 # ————————15PerfectCRM实现King_admin多条件过滤———————— 31 # 过滤器(可以包含ManyToManyField) (注意加 逗号 , ) 32 # list_filter = (‘source‘,‘consultant‘,‘consult_courses‘,) 33 list_filter = (‘date‘,‘source‘,‘consultant‘,‘consult_courses‘,) 34 # ————————15PerfectCRM实现King_admin多条件过滤———————— 35 # ————————16PerfectCRM实现King_admin日期过滤———————— 36 # ————————18PerfectCRM实现King_admin搜索关键字———————— 37 #搜索(不能包含CharField)(注意加 逗号 , ) 38 search_fields = (‘name‘,‘qq‘,) 39 # ————————18PerfectCRM实现King_admin搜索关键字———————— 40 # ————————26PerfectCRM实现King_admin自定义排序———————— 41 ordering = ‘-qq‘ #自定义排序,默认‘-id‘ 42 # ————————26PerfectCRM实现King_admin自定义排序———————— 43 # ————————27PerfectCRM实现King_admin编辑复选框———————— 44 filter_horizontal = (‘tags‘,) #复选框 45 # ————————27PerfectCRM实现King_admin编辑复选框———————— 46 # ————————33PerfectCRM实现King_admin编辑整张表限制———————— 47 readonly_table=True#默认表单不锁定 48 # ————————33PerfectCRM实现King_admin编辑整张表限制———————— 49 50 # ————————55PerfectCRM实现CRM客户报名状态颜色变化———————— 51 colored_fields = { 52 ‘status‘:{‘已报名‘:"rgba(145, 255, 0, 0.78)", 53 ‘未报名‘:"#ddd"},} 54 # ————————55PerfectCRM实现CRM客户报名状态颜色变化———————— 55 56 # ————————54PerfectCRM实现CRM客户报名链接———————— 57 def enroll(self): 58 ‘‘‘报名‘‘‘ 59 print("customize field enroll",self) 60 link_name = "报名" 61 if self.instance.status == 0: 62 link_name = "报名新课程" 63 return ‘‘‘<a class="btn-link" href="/bpm/customer/%s/enrollment/">点击%s</a> ‘‘‘ % (self.instance.id,link_name) 64 # url(r‘^customer/(\\d+)/enrollment/$‘, sales_views.enrollment, name="enrollment"), # 客户招生#报名流程一 下一步 65 enroll.display_name = "报名链接" 66 # ————————54PerfectCRM实现CRM客户报名链接———————— 67 68 69 70 # ————————24PerfectCRM实现King_admin自定义操作数据———————— 71 # from django.shortcuts import render 72 actions = [‘test_actions‘,]#定制功能 #测试返回到一个新页面 73 def test_actions(self,request,arg2):#对应的函数 #request类自己的请求 #arg2类的内容 74 return render(request,"king_admin/table_index.html") 75 test_actions.short_description = "测试显示中文" 76 # ————————24PerfectCRM实现King_admin自定义操作数据———————— 77 78 # ————————28PerfectCRM实现King_admin编辑限制———————— 79 # ————————31PerfectCRM实现King_admin编辑多对多限制———————— 80 # readonly_fields = (‘qq‘, ‘consultant‘,) # 不可修改 81 readonly_fields = (‘qq‘, ‘consultant‘,‘tags‘,) # 不可修改 82 # ————————31PerfectCRM实现King_admin编辑多对多限制———————— 83 84 # ————————29PerfectCRM实现King_admin编辑自定义限制———————— 85 def default_form_validation(self,obj): 86 print(‘validation:制定的‘,obj.cleaned_data) 87 consult_course=obj.cleaned_data.get(‘content‘,‘‘)#自制验证字段 88 if len(consult_course)<10: 89 return ValidationError(#添加错误信息 返回 90 ("该字段%(field)s 咨询内容记录不能少于10个字符"), 91 code=‘invalid‘, 92 params={‘field‘:‘content‘,}, 93 ) 94 # ————————29PerfectCRM实现King_admin编辑自定义限制———————— 95 96 # ————————28PerfectCRM实现King_admin编辑限制———————— 97 98 # ————————30PerfectCRM实现King_admin编辑自定义字段验证———————— 99 def clean_name(self,obj,*args,**kwargs):#名称验证 单个 100 name=obj.cleaned_data[‘name‘] 101 if not name: 102 obj.add_error(‘name‘,‘不能为空!‘) 103 return ValidationError(#添加错误信息 返回 104 ("%(field)s:该字段 不能为空"), 105 code=‘invalid‘, 106 params={‘field‘:‘name‘,}, 107 ) 108 elif len(name)<5: 109 obj.add_error(‘name‘,‘不能小于5个字符!‘) 110 #return ValidationError(‘‘,) 111 return ValidationError(#添加错误信息 返回 112 ("%(field)s:该字段 不能小于5个字符!"), 113 code=‘invalid‘, 114 params={‘field‘:‘name‘,}, 115 ) 116 # ————————30PerfectCRM实现King_admin编辑自定义字段验证———————— 117 118 # ————————34PerfectCRM实现CRM自定义用户———————— 119 #10账号表 120 class UserProfileAdmin(BaseAdmin):#定制Djanago admin 121 list_display = (‘id‘, ‘email‘, ‘name‘) # 显示字段表头 122 123 # ————————36PerfectCRM实现King_admin密码修改———————— 124 readonly_fields = (‘password‘,) # 不可修改,限制 125 filter_horizontal = (‘user_permissions‘,‘groups‘) #复选框 126 modelform_exclude_fields=[‘last_login‘]#排除#不显示 #自增日期 #base_admin.py #forms.py 127 # ————————36PerfectCRM实现King_admin密码修改———————— 128 129 site.register(models.UserProfile, UserProfileAdmin) 130 # ————————34PerfectCRM实现CRM自定义用户———————— 131 132 # ————————05PerfectCRM实现King_admin注册功能获取内存———————— 133 # register(models.Customer,CustomerAdmin) 134 # register(models.CourseRecord) 135 site.register(models.Customer,CustomerAdmin) 136 137 # ————————59PerfectCRM实现king_admin批量生成上课记录———————— 138 # site.register(models.CourseRecord) 139 # ————————59PerfectCRM实现king_admin批量生成上课记录———————— 140 141 # ————————05PerfectCRM实现King_admin注册功能获取内存———————— 142 # ————————04PerfectCRM实现King_admin注册功能———————— 143 144 145 # ————————57PerfectCRM实现CRM客户报名缴费链接———————— 146 #06学员报名信息表 147 class EnrollmentAdmin(BaseAdmin):#定制Djanago admin 148 list_display = (‘id‘, ‘customer‘, ‘enrolled_class‘,‘consultant‘, ‘Pay_cost‘, ‘date‘,‘payment‘) # 显示字段表头 149 # ————————59PerfectCRM实现king_admin批量生成上课记录———————— 150 list_filter = (‘enrolled_class‘,‘consultant‘, ‘Pay_cost‘,) # 过滤器(可以包含ManyToManyField) (注意加 逗号 , ) 151 # ————————59PerfectCRM实现king_admin批量生成上课记录———————— 152 colored_fields = { 153 ‘Pay_cost‘:{True:"rgba(145, 255, 0, 0.78)", 154 False:"#ddd"},} 155 156 def payment(self): 157 link_name = "增加缴费" 158 if self.instance.Pay_cost == False: 159 link_name = "缴费" 160 return ‘‘‘<a class="btn-link" href="/bpm/payment/%s/">点击%s</a> ‘‘‘ % (self.instance.id,link_name) 161 #url(r‘^payment/(\\d+)/$‘, financial_views.payment, name="payment"), # 报名流程四 缴费 #财务 162 payment.display_name = "缴费链接" 163 site.register(models.Enrollment,EnrollmentAdmin) #06学员报名信息表 164 # ————————57PerfectCRM实现CRM客户报名缴费链接———————— 165 166 167 # ————————59PerfectCRM实现king_admin批量生成上课记录———————— 168 from django.shortcuts import render,HttpResponse,redirect 169 #上课记录 讲师 170 class CourseRecordAdmin(BaseAdmin): 171 list_display = [‘id‘,‘from_class‘,‘day_num‘,‘teacher‘,‘has_homework‘,‘homework_title‘,‘homework_content‘,‘outline‘,‘date‘] #显示字段表头 172 list_filter = (‘from_class‘,‘teacher‘,‘date‘) # 过滤器(可以包含ManyToManyField) (注意加 逗号 , ) 173 def initialize_studyrecords(self,request,queryset):#制定功能 174 print(‘initialize_studyrecords‘,self,request,queryset) 175 if len(queryset)>1: 176 return HttpResponse("同时只能选择一个班级!") 177 print(‘获取对应的学员‘,queryset[0].from_class.enrollment_set.all()) # _set反向查询 178 new_obj_list=[]#用于批量创建事务 #防止数据库事物回滚 179 for enrll_obj in queryset[0].from_class.enrollment_set.all():#创建学习记录 180 # models.StudyRecord.objects.get_or_create( #get_or_ #防止报错 181 # student=enrll_obj,#对应学员 182 # course_record=queryset[0], 183 # attendance=0,#签到状态,默认签到, 184 # score=0,#成绩 185 # ) 186 187 #防止数据库事物回滚 #"""09学习纪录""" 188 new_obj_list.append(models.StudyRecord( 189 student=enrll_obj,#对应学员 190 course_record=queryset[0], #班级#节课 191 attendance=0,#签到状态,默认签到, 192 score=0,#成绩 193 )) 194 try: 195 models.StudyRecord.objects.bulk_create(new_obj_list)#bulk_create批量创建数据库事物 #统一最后保存 196 except Exception as e: 197 return HttpResponse(‘批量创建失败,本节课可能有相应的上课记录‘) 198 return redirect("/king_admin/crm/studyrecord/?course_record=%s"%queryset[0].id)#学习记录 #加上过滤 199 actions = [‘initialize_studyrecords‘,] 200 initialize_studyrecords.short_description = "创建班级本节上课记录"#显示别名 201 site.register(models.CourseRecord,CourseRecordAdmin)##课程上课记录表 202 # ————————59PerfectCRM实现king_admin批量生成上课记录———————— 203 # ————————59PerfectCRM实现king_admin批量生成上课记录———————— 204 class StudyRecordAdmin(BaseAdmin): 205 list_display = [‘id‘,‘student‘,‘course_record‘,‘attendance‘,‘score‘,‘date‘] 206 list_filter =[‘course_record‘,‘attendance‘,‘score‘,‘student‘]# 过滤器(可以包含ManyToManyField) (注意加 逗号 , ) 207 list_editable = [‘score‘,‘attendance‘]#可编辑 208 site.register(models.StudyRecord,StudyRecordAdmin)#09学习纪录 209 # ————————59PerfectCRM实现king_admin批量生成上课记录————————
以上是关于Django项目:CRM(客户关系管理系统)--69--59PerfectCRM实现king_admin批量生成上课记录的主要内容,如果未能解决你的问题,请参考以下文章
Django项目:CRM(客户关系管理系统)--66--56PerfectCRM实现CRM客户首列进入更改页优化路径
Django项目:CRM(客户关系管理系统)--70--60PerfectCRM实现CRM学生上课记录
Django项目:CRM(客户关系管理系统)--72--62PerfectCRM实现CRM讲师讲课记录