python crm_Python CRM项目一

1 from django.db importmodels2 from django.contrib.auth.models importUser3 #Create your models here.

4 classCustomer(models.Model):5 '''客户信息表'''

6 name = models.CharField(max_length=32,null=True,blank=True)7 qq = models.CharField(max_length=64,unique=True)8 qq_name = models.CharField(max_length=64,null=True,blank=True)9 phone = models.CharField(max_length=64,null=True,blank=True)10 source_choices = ((0,'转介绍'),(1,'QQ群'),(2,'官网'),(3,'百度推广'),(4,'51cto'),(5,'知乎推荐'),(6,'市场推广'))11 source = models.SmallIntegerField(choices=source_choices)12 referral_from = models.CharField(verbose_name='转介绍人QQ',max_length=64,null=True,blank=True)13 consult_course = models.ForeignKey('Course',verbose_name='咨询课程')14 content = models.TextField(verbose_name='咨询详情')15 consultant = models.ForeignKey('UserProfile',verbose_name='销售')16 tags = models.ManyToManyField('Tag',blank=True,null=True);17 memo = models.TextField(blank=True,null=True)18 status_choice = (('signed','已报名'),('unregistered','未报名'))19 status = models.CharField(max_length=64,choices=status_choice,default='unregistered',verbose_name='客户状态')20 date = models.DateTimeField(auto_now_add=True)21

22 classMeta:23 verbose_name_plural = '客户'

24

25 def __str__(self):26 returnself.name27

28 classCustomerFollowUp(models.Model):29 '''客户跟进表'''

30 customer = models.ForeignKey('Customer')31 content = models.TextField(verbose_name='跟进内容')32 consultant = models.ForeignKey('UserProfile')33 intention_choices = ((0,'2周内报名'),(1,'1个月报名'),(2,'近期无报名计划'),(3,'已在其他机构报名'),(4,'已报名'),(5,'已拉黑'))34 intention = models.SmallIntegerField(choices=intention_choices)35 date = models.DateTimeField(auto_now_add=True)36

37 def __str__(self):38 return '%s %s' %(self.customer.qq, self.intention)39

40 classMeta:41 verbose_name_plural = '客户跟进记录'

42

43 classCourse(models.Model):44 '''课程表'''

45 name = models.CharField(max_length=128,unique=True)46 price =models.PositiveSmallIntegerField()47 period = models.PositiveSmallIntegerField(verbose_name='周期(月)')48 outline =models.TextField()49

50 def __str__(self):51 returnself.name52

53 classMeta:54 verbose_name_plural = '课程'

55

56 classBranch(models.Model):57 '''校区表'''

58 name = models.CharField(max_length=128,unique=True)59 addr = models.CharField(max_length=512)60

61 def __str__(self):62 returnself.name63

64 classMeta:65 verbose_name_plural = '校区'

66

67 classClassList(models.Model):68 '''班级表'''

69 branch = models.ForeignKey('Branch',verbose_name='分校')70 course = models.ForeignKey('Course')71 semester = models.PositiveSmallIntegerField(verbose_name='学期')72 teachers = models.ManyToManyField('UserProfile')73 class_type_choice = ((0,'面授班(脱产)'),(1,'面授班(周末)'),(2,'网络班'))74 class_type = models.SmallIntegerField(choices=class_type_choice)75 start_date = models.DateField(verbose_name='开班日期')76 end_date = models.DateField(verbose_name='结业日期',blank=True,null=True)77

78 def __str__(self):79 return '%s %s %s' %(self.branch, self.course, self.semester)80

81 classMeta:82 unique_together = ('branch', 'course', 'semester')83 verbose_name_plural = '班级'

84

85

86

87 classCourseRecord(models.Model):88 '''上课记录表'''

89 from_class = models.ForeignKey('ClassList',verbose_name='班级')90 day_num = models.PositiveSmallIntegerField(verbose_name='第几节(天)')91 teacher = models.ForeignKey('UserProfile')92 has_homework = models.BooleanField(default=True)93 homework_title = models.CharField(max_length=256,blank=True,null=True)94 homework_content = models.TextField(blank=True,null=True)95 outline = models.TextField(verbose_name='本节课大纲')96 date = models.DateTimeField(auto_now_add=True)97

98 def __str__(self):99 return '%s %s' %(self.from_class, self.day_num)100

101 classMeta:102 unique_together = ('from_class', 'day_num')103 verbose_name_plural = '上课记录'

104

105

106 classStudyRecord(models.Model):107 '''学习记录表'''

108 student = models.ForeignKey('Enrollment')109 course_record = models.ForeignKey('CourseRecord')110 attendance_choice = ((0,'已签到'),(1,'迟到'),(2,'缺勤'),(3,'早退'))111 attendance = models.SmallIntegerField(choices=attendance_choice,default=0)112 score_choices = ((100,'A+'),(90,'A'),(85,'B+'),(80,'B'),(75,'B-'),(70,'C+'),(60,'C'),(40,'C-'),(-50,'D'),(-100,'COPY'),(0,'N/A'))113 score = models.SmallIntegerField(choices=score_choices)114 memo = models.TextField(blank=True,null=True)115 date = models.DateTimeField(auto_now_add=True)116

117 def __str__(self):118 return '%s %s %s' %(self.student, self.course_record, self.score)119

120 classMeta:121 unique_together = ('student', 'course_record')122 verbose_name_plural = '学习记录'

123

124

125

126

127 classEnrollment(models.Model):128 '''学生报名表(学生报名信息,合同,入学日期,所报班级)'''

129 customer = models.ForeignKey('Customer')130 enrolled_class = models.ForeignKey('ClassList',verbose_name='所报班级')131 consultant = models.ForeignKey('UserProfile',verbose_name='课程顾问')132 contact_agreed = models.BooleanField(default=False,verbose_name='学生已同意合同条款')133 contact_approved = models.BooleanField(default=False,verbose_name='合同已审核')134 date = models.DateTimeField(auto_now_add=True)135

136 def __str__(self):137 return '%s %s' %(self.customer, self.enrolled_class)138

139 classMeta:140 unique_together = ('customer', 'enrolled_class')141 verbose_name_plural = '报名'

142

143 classPayment(models.Model):144 '''缴费记录'''

145 customer = models.ForeignKey('Customer')146 course = models.ForeignKey('Course')147 amount = models.PositiveIntegerField(verbose_name='数额',default=500)148 consultant = models.ForeignKey('UserProfile')149 date = models.DateTimeField(auto_now_add=True)150

151 def __str__(self):152 return '%s %s' %(self.customer, self.amount)153

154 classMeta:155 verbose_name_plural = '缴费记录'

156

157 classUserProfile(models.Model):158 '''账号表'''

159 user =models.OneToOneField(User)160 name = models.CharField(max_length=32)161 roles = models.ManyToManyField('Role',blank=True,null=True)162

163 def __str__(self):164 returnself.name165

166

167 classRole(models.Model):168 '''角色表'''

169 name = models.CharField(max_length=64,unique=True)170

171 def __str__(self):172 returnself.name173

174 classMeta:175 verbose_name_plural = '角色'

176

177 classTag(models.Model):178 '''标签备注'''

179 name = models.CharField(max_length=64,unique=True)180

181 def __str__(self):182 returnself.name183 classMeta:184 verbose_name_plural = '标签'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python arcgis批量绘图_ARCGIS中Python实现批量裁剪

《ARCGIS中Python实现批量裁剪》由会员分享,可在线阅读,更多相关《ARCGIS中Python实现批量裁剪(1页珍藏版)》请在人人文库网上搜索。1、程序代码:pythonview plaincopyprint?1. importarcpy2. arcpy.CheckOutExtension(spatial)3. arcpy.gp.…

python123自定义幂函数_python基础之函数

python 函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这…

java 搜索引擎 关键词高亮_和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮(示例代码)...

前面几篇文章详细讲解了 ElasticSearch 的搭建以及使用 SpringDataElasticSearch 来完成搜索查询,但是搜索一般都会有搜索关键字高亮的功能,今天我们把它给加上。系列文章环境依赖本文以及后续 es 系列文章都基于 5.5.3 这个版本的 elasticsearch &#…

python词汇网络分析_8个Python高效数据分析的技巧!

文章来源于网络来源|CSDN这篇文章介绍了8个使用Python进行数据分析的方法,不仅能够提升运行效率,还能够使代码更加“优美”。定义某种列表时,写For 循环过于麻烦,幸运的是,Python有一种内置的方法可以在一行…

改变php二维数组的值_php如何修改二维数组中的值?

php修改二维数组中值的方法&#xff1a;1、通过【for($i 0; $i < count(Array()); $i)】语句修改&#xff1b;2、通过foreach($users as &$user)语句修改。php修改二维数组中值的方法&#xff1a;1、二维数组可以通过for($i 0; $i < count(Array()); $i)这种形式…

华为python673集_python库-collections模块Counter类

Counter类主要是用来跟踪值出现的次数。它是一个无序的容器类型&#xff0c;以字典的键值对形式存储&#xff0c;其中元素作为key&#xff0c;其计数作为value。demo:all_words [] # 列表里面是汉字(可重复)counter Counter(all_words) # 返回 dict Counter类的目的是用来跟踪…

php下载 微信头像图片_php保存微信用户头像到本地或者服务器的完美方案!

//方法一&#xff1a;//推荐用该方法$header array(User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0,Accept-Language: zh-CN,zh;q0.8,en-US;q0.5,en;q0.3,Accept-Encoding: gzip, deflate,);$urlhttp://wx.qlogo.cn/mmopen/vi_3…

php 预防循环发短信_php短信接口发送短信失败,罪魁祸首原来在这里

随着国民经济的高速发展&#xff0c;短信的应用也逐渐商业化&#xff0c;很多企业、商家开始使用php短信接口来进行推广、营销或内部管理&#xff0c;只是个别的商家在应用php短信接口的时候却遇到了短信发送失败的现象&#xff0c;这到底是因为商家操作有误&#xff0c;还是因…

python实时显示温度变化_python实时温度绘制

我目前正在做一个项目&#xff0c;它需要实时监控各种量&#xff0c;如温度、压力、湿度等。我正在采用一种方法&#xff0c;即使用matplotlib和drwnow绘制一个图形。在HOST "localhost"PORT 4223UID1 "tsJ" # S1from tinkerforge.ip_connection import…

jlabel字怎么变化_怎样才能把字写好?详解最科学的练字方法及步骤

一&#xff1a;正确的学习之路1&#xff1a;临帖从古到今&#xff0c;临帖是学习书法最基本的方法&#xff0c;没有一个书法家是没有临过帖的。2&#xff1a;专注专注学一个书法家的字&#xff0c;专心致志&#xff0c;认真临写&#xff0c;持之以恒&#xff0c;直到形同神似。…

php取指定文件夹图片大小,php获取某文件夹的大小

// 获取文件夹大小function getDirSize($dir){$handle opendir($dir);while (false!($FolderOrFile readdir($handle))){if($FolderOrFile ! "." && $FolderOrFile ! ".."){if(is_dir("$dir/$FolderOrFile")){$sizeResult getDirSize…

python lncrna_lncRNA分析

目前人们对lncRNA认识还处在初级阶段&#xff0c;lncRNA起初被认为是基因组转录的“噪音”&#xff0c;是RNA聚合酶II转录的副产物&#xff0c;不具有生物学功能。然而大量研究表明&#xff0c;lncRNA在细胞核内、核外&#xff0c;通过染色质修饰&#xff0c;转录调控&#xff…

ubuntu 缺少php安装包,ubuntu 16.04 lts安装php环境和composer依赖包管理

安装环境1.安装之前先更新系统1 sudo apt update2.安装Apache21 sudo apt install apache23.安装PHP1 sudo apt install php2 sudo apt-get install libapache2-mod-php4.安装MySQL1 sudo apt install mysql-server php7.0-mysql2 sudo apt-get install mysql-client3 mysql_se…

找不到具有指定id_JAVA如何整合es指定字段不分词搜索?

一、问题在做一个需求的时候&#xff0c;需要按照电话号码查询用户关系&#xff0c;所以我这边先讲相关信息同步到es&#xff0c;但是电话号码是加密的&#xff0c;所以显示的字符串是杂乱的&#xff0c;既有字母&#xff0c;又有斜杠等号等字符&#xff0c;在进行分词查询的时…

php 解析java map,java_java遍历Map的几种方法分析,本文实例分析了java遍历Map的几 - phpStudy...

java遍历Map的几种方法分析本文实例分析了java遍历Map的几种方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;Java代码&#xff1a;Map mapnew HashMap();map.put("username", "qq");map.put("passWord", "123");map.put(…

vant 项目_vueCli4+vant+router+vuex+移动端适配

教程的开始 各位同学请先安装node、npm、vuecli4 巴拉巴拉...废话不多说立即开始随便找个地方 cmd&#xff0c;powerShell也可以 命令行走起1. 创建vue项目 随便起个名字就叫my-vue吧&#xff0c;傻瓜式回车键就行&#xff0c;也可以根据自己的喜好选择eslint。vue create my-v…

php快废了,PHP为什么要逐渐废弃一些函数?出于什么原因呢?

1.比如说废弃mysql开头的几个数据库函数&#xff0c;是为了面向对象而废弃的么&#xff1f;2.还有magic_quotes这个为什么又要去掉呢?3.等等。。知道的说一下&#xff0c;感激不尽。回复内容&#xff1a;1.比如说废弃mysql开头的几个数据库函数&#xff0c;是为了面向对象而废…

电路结构原理_精密半波、全波整流电路结构原理图解

利用二极管(开关器件)的单向导电特性&#xff0c;和放大器的优良放大性能相结合&#xff0c;可做到对输入交变信号(尤其是小幅度的电压信号)进行精密的整流&#xff0c;由此构成精密半波整流电路。若由此再添加简单电路&#xff0c;即可构成精密全波整流电路。二极管的导通压降…

java记录pv,计算500万PV/每天的网站

Refer to:http://elf8848.iteye.com/blog/967049你想建设一个能承受500万PV/每天的网站吗&#xff1f; 500万PV是什么概念&#xff1f;服务器每秒要处理多少个请求才能应对&#xff1f;如果计算呢&#xff1f;PV是什么&#xff1a;PV是page view的简写。PV是指页面的访问次数&a…

vlookup两个条件匹配_vlookup,你还是只会基础的单条件查找?

很多数据分析师在简历上都会说自己熟悉excel&#xff0c;但熟练使用excel必须要掌握的核心函数vlookup首当其冲&#xff0c;其次是sumifs、match、index等等。就算熟悉vlookup&#xff0c;很多人也只会基础的单条件查找&#xff0c;其实在工作中能用到vlookup的地方有很多&…