1. 程式人生 > >Django項目:CRM(客戶關系管理系統)--69--59PerfectCRM實現king_admin批量生成上課記錄

Django項目:CRM(客戶關系管理系統)--69--59PerfectCRM實現king_admin批量生成上課記錄

new set isp CI 客戶 變化 erro index arc

技術分享圖片

技術分享圖片

技術分享圖片
  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批量生成上課記錄————————
# kingadmin.py

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

Django項目:CRM(客戶關系管理系統)--69--59PerfectCRM實現king_admin批量生成上課記錄