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————————
#admin.py

 

 

 

技术分享图片

 

 

 

技术分享图片技术分享图片技术分享图片技术分享图片

以上是关于Django项目:CRM(客户关系管理系统)--64--54PerfectCRM实现admin批量生成上课记录的主要内容,如果未能解决你的问题,请参考以下文章

Django项目:CRM(客户关系管理系统)--66--56PerfectCRM实现CRM客户首列进入更改页优化路径

Django CRM学员系统项目

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

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

Django项目:CRM(客户关系管理系统)--46--37PerfectCRM实现CRM用户注册

Django项目:CRM(客户关系管理系统)--64--54PerfectCRM实现CRM客户报名链接