Django项目:CRM(客户关系管理系统)--64--54PerfectCRM实现admin批量生成上课记录
Posted ujq3
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django项目:CRM(客户关系管理系统)--64--54PerfectCRM实现admin批量生成上课记录相关的知识,希望对你有一定的参考价值。
1 #admin.py 2 # ————————01PerfectCRM基本配置ADMIN———————— 3 from django.contrib import admin 4 # Register your models here. 5 from crm import models #从crm导入models 6 7 # ————————24PerfectCRM实现King_admin自定义操作数据———————— 8 from django.shortcuts import render 9 # ————————24PerfectCRM实现King_admin自定义操作数据———————— 10 11 # ————————35PerfectCRM实现CRM重写Admin密码修改———————— 12 from django import forms 13 from django.contrib.auth.admin import UserAdmin 14 from django.contrib.auth.forms import ReadOnlyPasswordHashField 15 from crm.models import UserProfile 16 #重写admin 17 class UserCreationForm(forms.ModelForm): 18 """ 一个表单来创建新用户。包括所有必需的 19 字段,加上重复密码。""" 20 password1 = forms.CharField(label=‘Password‘, widget=forms.PasswordInput) 21 password2 = forms.CharField(label=‘Password confirmation‘, widget=forms.PasswordInput) 22 class Meta: 23 model = UserProfile 24 fields = (‘email‘, ‘name‘) 25 def clean_password2(self): 26 # 检查两个密码条目匹配 27 password1 = self.cleaned_data.get("password1") 28 password2 = self.cleaned_data.get("password2") 29 if password1 and password2 and password1 != password2: 30 raise forms.ValidationError("密码不匹配") 31 return password2 32 def save(self, commit=True): 33 #保存密码散列的格式提供 34 user = super(UserCreationForm, self).save(commit=False) 35 user.set_password(self.cleaned_data["password1"]) 36 if commit: 37 user.save() 38 return user 39 #重写admin 40 class UserChangeForm(forms.ModelForm): 41 """更新用户的一种形式。包括所有字段 42 用户,但取代了管理员的密码字段 43 密码散列显示领域。 44 """ 45 password = ReadOnlyPasswordHashField(label="Password", 46 help_text=("原始密码不存储,所以没有办法看到" 47 "这个用户的密码,但是你可以改变密码 " 48 "使用 <a href=\\"../password/\\">修改密码</a>."))#哈值 49 class Meta: 50 model = UserProfile 51 fields = (‘email‘, ‘password‘, ‘name‘, ‘is_active‘, ‘is_superuser‘) 52 def clean_password(self): 53 # 不管用户提供什么,返回初始值。 54 # 这是在这里,而不是在球场上,因为 55 # 字段没有对初始值的访问 56 return self.initial["password"] 57 #重写admin 58 class UserProfileAdmin(UserAdmin):#用户类,继承上一个类 UserAdmin 59 # 单添加和更改用户实例 60 form = UserChangeForm 61 add_form = UserCreationForm 62 63 # 字段用于显示用户模型。 64 # 这些覆盖定义UserAdmin固定在底座上 65 # auth.User引用特定字段。 66 list_display = (‘email‘, ‘name‘,‘is_active‘, ‘is_superuser‘, ) #显示字段表头 67 list_filter = (‘is_superuser‘,) # 过滤器(可以包含ManyToManyField) (注意加 逗号 , ) 68 fieldsets = ( #自定义显示字段 69 (None, {‘fields‘: (‘email‘,‘name‘, ‘password‘)}), 70 (‘个人信息‘, {‘fields‘: ( ‘email‘,‘name‘)}), 71 (‘用户权限‘, {‘fields‘: (‘is_active‘,‘is_superuser‘,‘groups‘,‘user_permissions‘)}),#后台显示配置 72 ) 73 #添加自定义字段 74 # 覆盖get_fieldsets时使用这个属性创建一个用户。 75 add_fieldsets = ( 76 (None, { 77 ‘classes‘: (‘wide‘,), 78 ‘fields‘: (‘email‘, ‘name‘, ‘password1‘, ‘password2‘)} 79 ), 80 ) 81 search_fields = (‘email‘,) #搜索(不能包含CharField)(注意加 逗号 , ) 82 ordering = (‘email‘,) #自定义排序,默认‘-id‘ 83 filter_horizontal = (‘groups‘,‘user_permissions‘, ) #复选框 84 85 # 现在注册这个新UserAdmin ,因为我们不在使用Django的内置权限 86 admin.site.register(UserProfile, UserProfileAdmin) 87 #注销 原来的 # admin.site.register(models.UserProfile) #10账号表 88 # ————————35PerfectCRM实现CRM重写Admin密码修改———————— 89 90 # ————————04PerfectCRM实现King_admin注册功能———————— 91 class CustomerAdmin(admin.ModelAdmin):#定制Djanago admin 92 list_display = (‘id‘,‘qq‘,‘source‘,‘consultant‘,‘content‘,‘date‘)#显示字段表头 93 # ————————11PerfectCRM实现King_admin分页显示条数———————— 94 list_per_page = 2 #分页条数 95 # ————————11PerfectCRM实现King_admin分页显示条数———————— 96 # ————————16PerfectCRM实现King_admin日期过滤———————— 97 # ————————15PerfectCRM实现King_admin多条件过滤———————— 98 # 过滤器(可以包含ManyToManyField) (注意加 逗号 , ) 99 # list_filter = (‘source‘,‘consultant‘,‘consult_courses‘,) 100 list_filter = (‘date‘,‘source‘,‘consultant‘,‘consult_courses‘,) 101 # ————————15PerfectCRM实现King_admin多条件过滤———————— 102 # ————————16PerfectCRM实现King_admin日期过滤———————— 103 # ————————18PerfectCRM实现King_admin搜索关键字———————— 104 #搜索(不能包含CharField)(注意加 逗号 , ) 105 search_fields = (‘name‘,‘qq‘,) 106 # ————————18PerfectCRM实现King_admin搜索关键字———————— 107 108 # ————————26PerfectCRM实现King_admin自定义排序———————— 109 ordering = [‘-qq‘] #自定义排序,默认‘-id‘ 110 # ————————26PerfectCRM实现King_admin自定义排序———————— 111 112 # ————————27PerfectCRM实现King_admin编辑复选框———————— 113 filter_horizontal = (‘tags‘,) #复选框 114 # ————————27PerfectCRM实现King_admin编辑复选框———————— 115 116 # ————————28PerfectCRM实现King_admin编辑限制———————— 117 readonly_fields = (‘qq‘,‘consultant‘,) # 不可修改 118 # ————————28PerfectCRM实现King_admin编辑限制———————— 119 120 121 122 # ————————24PerfectCRM实现King_admin自定义操作数据———————— 123 # from django.shortcuts import render 124 actions = [‘test_actions‘,]#定制功能 #测试返回到一个新页面 125 def test_actions(self,request,arg2):#对应的函数 #request类自己的请求 #arg2类的内容 126 return render(request,"king_admin/table_index.html") 127 test_actions.short_description = "测试显示中文" 128 # ————————24PerfectCRM实现King_admin自定义操作数据———————— 129 # ————————04PerfectCRM实现King_admin注册功能———————— 130 131 #注册到 Django Admin里 132 admin.site.register(models.Branch) #01校区表 133 admin.site.register(models.ClassList) #02班级表 134 admin.site.register(models.Course) #03课程表,可以报名那些课程 135 136 # ————————04PerfectCRM实现King_admin注册功能———————— 137 # admin.site.register(models.Customer) #04客户信息表 138 admin.site.register(models.Customer,CustomerAdmin) #04客户信息表 139 # ————————04PerfectCRM实现King_admin注册功能———————— 140 141 # ————————48PerfectCRM实现CRM客户报名流程学生合同———————— 142 admin.site.register(models.ContractTemplate) #合同模版 143 # ————————48PerfectCRM实现CRM客户报名流程学生合同———————— 144 145 146 147 admin.site.register(models.CustomerFollowUp) #05客户跟进表 148 admin.site.register(models.Enrollment) #06学员报名信息表 149 admin.site.register(models.Payment) #07缴费记录表 150 151 152 153 # ————————54PerfectCRM实现admin批量生成上课记录———————— 154 # admin.site.register(models.CourseRecord) #08每节课上课纪录表 155 from django.shortcuts import render,HttpResponse,redirect 156 #上课记录 讲师 157 class CourseRecordAdmin(admin.ModelAdmin): 158 list_display = [‘from_class‘,‘day_num‘,‘teacher‘,‘has_homework‘,‘homework_title‘,‘homework_content‘,‘outline‘,‘date‘] #显示字段表头 159 list_filter = (‘from_class‘,‘teacher‘,‘date‘) # 过滤器(可以包含ManyToManyField) (注意加 逗号 , ) 160 def initialize_studyrecords(self,request,queryset):#制定功能 161 print(‘initialize_studyrecords‘,self,request,queryset) 162 if len(queryset)>1: 163 return HttpResponse("同时只能选择一个班级!") 164 print(‘获取对应的学员‘,queryset[0].from_class.enrollment_set.all()) # _set反向查询 165 new_obj_list=[]#用于批量创建事务 #防止数据库事物回滚 166 for enrll_obj in queryset[0].from_class.enrollment_set.all():#创建学习记录 167 # models.StudyRecord.objects.get_or_create( #get_or_ #防止报错 168 # student=enrll_obj,#对应学员 169 # course_record=queryset[0], 170 # attendance=0,#签到状态,默认签到, 171 # score=0,#成绩 172 # ) 173 174 #防止数据库事物回滚 #"""09学习纪录""" 175 new_obj_list.append(models.StudyRecord( 176 student=enrll_obj,#对应学员 177 course_record=queryset[0], #班级#节课 178 attendance=0,#签到状态,默认签到, 179 score=0,#成绩 180 )) 181 try: 182 models.StudyRecord.objects.bulk_create(new_obj_list)#bulk_create批量创建数据库事物 #统一最后保存 183 except Exception as e: 184 return HttpResponse(‘批量创建失败,本节课可能有相应的上课记录‘) 185 return redirect("/admin/crm/studyrecord/?course_record__id__exact=%s"%queryset[0].id)#学习记录 #加上过滤 186 actions = [‘initialize_studyrecords‘,] 187 initialize_studyrecords.short_description = "创建班级本节上课记录"#显示别名 188 admin.site.register(models.CourseRecord,CourseRecordAdmin)##课程上课记录表 189 # ————————54PerfectCRM实现批量生成上课记录———————— 190 # ————————54PerfectCRM实现批量生成上课记录———————— 191 # admin.site.register(models.StudyRecord) #09学习纪录 192 class StudyRecordAdmin(admin.ModelAdmin): 193 list_display = [‘student‘,‘course_record‘,‘attendance‘,‘score‘,‘date‘] 194 list_filter =[‘course_record‘,‘attendance‘,‘score‘,‘course_record__from_class‘,‘student‘]#排序 195 list_editable = [‘score‘,‘attendance‘]#可编辑 196 admin.site.register(models.StudyRecord,StudyRecordAdmin)##学习记录表 197 # ————————54PerfectCRM实现批量生成上课记录———————— 198 199 200 201 # ————————35PerfectCRM实现CRM重写Admin密码修改———————— 202 # admin.site.register(models.UserProfile) #10账号表 203 # ————————35PerfectCRM实现CRM重写Admin密码修改———————— 204 205 admin.site.register(models.Role) #11角色表 206 admin.site.register(models.Tag) #12标签表 207 208 ‘‘‘ 209 Django Admin里账号密码重置方法 210 #运行 Terminal 211 212 python manage.py createsuperuser 213 214 Username : admin 215 Email address: [email protected] 216 Password: admin123456 217 Password (again): admin123456 218 219 220 英文转中文方法 221 到settings.py里修改 222 # LANGUAGE_CODE = ‘en-us‘ 223 LANGUAGE_CODE = ‘zh-Hans‘ 224 ‘‘‘ 225 226 # ————————01PerfectCRM基本配置ADMIN————————
以上是关于Django项目:CRM(客户关系管理系统)--64--54PerfectCRM实现admin批量生成上课记录的主要内容,如果未能解决你的问题,请参考以下文章
Django项目:CRM(客户关系管理系统)--66--56PerfectCRM实现CRM客户首列进入更改页优化路径
Django项目:CRM(客户关系管理系统)--70--60PerfectCRM实现CRM学生上课记录
Django项目:CRM(客户关系管理系统)--72--62PerfectCRM实现CRM讲师讲课记录