Django CRM客户关系管理系统

CRM需求分析

随着信息化时代带来的科技创新,CRM客户关系管理系统带来的效益在已经成为很多企业提高竞争优势的一分部,CRM客户关系管理系统将企业管理和客户关系管理集成到统一的平台,其系统功能主要体现在企业与客户之间的业务和企业内部之前部门之间的业务。因此CRM客户关系管理系统不但可以记录企业自内部信息,对于客户信息存储也是可以做到的,其中还涉及市场竞争对手的情报资料,还包括了企业进行营销、销售及支持服务所需的各种数据。

功能实现

  (1)建议统一的信息编码系统;

  (2)设计能够良好反映事物特性的数据模型;

  (3)划分数据库管理,在分布式数据库管理系统和网络平台基础上,涉及全局共享及局部共享数据库,以支持分布式数据处理,实现各分系统之间及其内部各功能模块之间的信息集成。

  (4)提供强大的数据库管理系统,并在此基础上增加拿过来的完善的客户销售数据库、客户市场数据库、客户支持与服务数据库、企业综合信息数据库等。

CRM客户关系管理系统的管理理念始终是以客户为中心的,不同的管理系统有着自己不同的数据处理方式,因此企业在构建自己的客户关系管理数据库时需要注意系统的特性和其他企业管理软件的协调。

对于中小型企业在客户关系管理系统上的应用,可有助于企业对客户信息管理混乱状态的改善,加强了企业和客户之间的联系,因此下面是中小企业在面对客户关系管理系统时所需的需求:

  (1)因为是小型企业,系统将只设系统管理员,管理员拥有对企业全部系统资料的操作权限。

   (2)客户管理模块,基本资料的添加、修改、删除和查询功能;与客户相关的联系人资料的添加、修改、删除和查询功能。另外,当查询到需要信息的时候,系统应提供报表和打印功能,以供公司领导作出决策。

   (3)客户销售管理模块,有基本的添加、修改、删除和查询功能。其目标是提高客户销售数据的准确性、及时性和完整性,对客户销售进行有效管理,提供决策支持所需的数据。

(4)服务反馈模块,有基本的添加、修改、删除和查询功能,其目标是及时记录客户反馈的信息,提供有竞争力的售后支持、修理和维护服务

模型分析:

好了 开始写项目吧!

首先创建django项目:

环境:Python3

工具: pycharm

用到的插件:jquery bootsharp

  • 创建项目:
  • 根据关系编写model 认证方式继承于django自带认证from django.contrib.auth.models import User

  1 from django.db import models
  2 from django.contrib.auth.models import User
  3 # Create your models here.
  4
  5
  6 class Customer(models.Model):
  7 ‘‘‘客户信息表‘‘‘
  8 name = models.CharField(max_length=32,blank=True,null=True)
  9 qq = models.CharField(max_length=64,unique=True)
 10 qq_name = models.CharField(max_length=64,blank=True,null=True)
 11 phone = models.CharField(max_length=64,blank=True,null=True)
 12 source_choices = ((0,‘转介绍‘),
 13 (1,‘QQ群‘),
 14 (2,‘官网‘),
 15 (3,‘百度推广‘),
 16 (4,‘51CTO‘),
 17 (5,‘知乎‘),
 18 (6,‘市场推广‘)
 19 )
 20
 21 source = models.SmallIntegerField(choices=source_choices)
 22 referral_from = models.CharField(verbose_name="转介绍人qq",max_length=64,blank=True,null=True)
 23
 24 consult_course = models.ForeignKey("Course",verbose_name="咨询课程")
 25 content = models.TextField(verbose_name="咨询详情")
 26 tags = models.ManyToManyField("Tag",blank=True,null=True)
 27 status_choices = ((0,‘已报名‘),
 28 (1,‘未报名‘),
 29 )
 30 status = models.SmallIntegerField(choices=status_choices,default=1)
 31 consultant = models.ForeignKey("UserProfile")
 32 memo = models.TextField(blank=True,null=True)
 33 date = models.DateTimeField(auto_now_add=True)
 34
 35 def __str__(self):
 36 return self.qq
 37
 38 class Meta:
 39 verbose_name ="客户表"
 40 verbose_name_plural ="客户表"
 41
 42 class Tag(models.Model):
 43 name = models.CharField(unique=True,max_length=32)
 44
 45 def __str__(self):
 46 return self.name
 47
 48 class Meta:
 49 verbose_name = "标签"
 50 verbose_name_plural = "标签"
 51
 52 class CustomerFollowUp(models.Model):
 53 ‘‘‘客户跟进表‘‘‘
 54 customer = models.ForeignKey("Customer")
 55 content = models.TextField(verbose_name="跟进内容")
 56 consultant = models.ForeignKey("UserProfile")
 57
 58 intention_choices = ((0,‘2周内报名‘),
 59 (1,‘1个月内报名‘),
 60 (2,‘近期无报名计划‘),
 61 (3,‘已在其它机构报名‘),
 62 (4,‘已报名‘),
 63 (5,‘已拉黑‘),
 64 )
 65 intention = models.SmallIntegerField(choices=intention_choices)
 66 date = models.DateTimeField(auto_now_add=True)
 67
 68 def __str__(self):
 69 return "<%s : %s>" %(self.customer.qq,self.intention)
 70
 71
 72 class Meta:
 73 verbose_name = "客户跟进记录"
 74 verbose_name_plural = "客户跟进记录"
 75
 76 class Course(models.Model):
 77 ‘‘‘课程表‘‘‘
 78 name = models.CharField(max_length=64,unique=True)
 79 price = models.PositiveSmallIntegerField()
 80 period = models.PositiveSmallIntegerField(verbose_name="周期(月)")
 81 outline = models.TextField()
 82
 83 def __str__(self):
 84 return self.name
 85
 86 class Meta:
 87 verbose_name = "课程表"
 88 verbose_name_plural = "课程表"
 89
 90 class Branch(models.Model):
 91 ‘‘‘校区‘‘‘
 92 name = models.CharField(max_length=128,unique=True)
 93 addr = models.CharField(max_length=128)
 94 def __str__(self):
 95 return self.name
 96
 97
 98 class Meta:
 99 verbose_name = "校区"
100 verbose_name_plural = "校区"
101
102 class ClassList(models.Model):
103 ‘‘‘班级表‘‘‘
104 branch = models.ForeignKey("Branch",verbose_name="校区")
105 course = models.ForeignKey("Course")
106 class_type_choices = ((0,‘面授(脱产)‘),
107 (1,‘面授(周末)‘),
108 (2,‘网络班‘)
109 )
110 class_type = models.SmallIntegerField(choices=class_type_choices,verbose_name="班级类型")
111 semester = models.PositiveSmallIntegerField(verbose_name="学期")
112 teachers = models.ManyToManyField("UserProfile")
113 start_date = models.DateField(verbose_name="开班日期")
114 end_date = models.DateField(verbose_name="结业日期",blank=True,null=True)
115
116 def __str__(self):
117 return "%s %s %s" %(self.branch,self.course,self.semester)
118
119 class Meta:
120 unique_together = (‘branch‘,‘course‘,‘semester‘)
121 verbose_name_plural = "班级"
122 verbose_name = "班级"
123
124 class CourseRecord(models.Model):
125 ‘‘‘上课记录‘‘‘
126 from_class = models.ForeignKey("ClassList",verbose_name="班级")
127 day_num = models.PositiveSmallIntegerField(verbose_name="第几节(天)")
128 teacher = models.ForeignKey("UserProfile")
129 has_homework = models.BooleanField(default=True)
130 homework_title = models.CharField(max_length=128,blank=True,null=True)
131 homework_content = models.TextField(blank=True,null=True)
132 outline = models.TextField(verbose_name="本节课程大纲")
133 date = models.DateField(auto_now_add=True)
134
135 def __str__(self):
136 return "%s %s" %(self.from_class,self.day_num)
137
138 class Meta:
139 unique_together = ("from_class", "day_num")
140 verbose_name_plural = "上课记录"
141
142
143 class StudyRecord(models.Model):
144 ‘‘‘学习记录‘‘‘
145 student = models.ForeignKey("Enrollment")
146 course_record = models.ForeignKey("CourseRecord")
147 attendance_choices = ((0,‘已签到‘),
148 (1,‘迟到‘),
149 (2,‘缺勤‘),
150 (3,‘早退‘),
151 )
152 attendance = models.SmallIntegerField(choices=attendance_choices,default=0)
153 score_choices = ((100,"A+"),
154 (90,"A"),
155 (85,"B+"),
156 (80,"B"),
157 (75,"B-"),
158 (70,"C+"),
159 (60,"C"),
160 (40,"C-"),
161 (-50,"D"),
162 (-100,"COPY"),
163 (0,"N/A"),
164 )
165 score = models.SmallIntegerField(choices=score_choices,default=0)
166 memo = models.TextField(blank=True,null=True)
167 date = models.DateField(auto_now_add=True)
168
169 def __str__(self):
170 return "%s %s %s" %(self.student,self.course_record,self.score)
171
172 class Meta:
173 unique_together = (‘student‘,‘course_record‘)
174 verbose_name_plural = "学习记录"
175
176
177 class Enrollment(models.Model):
178 ‘‘‘报名表‘‘‘
179 customer = models.ForeignKey("Customer")
180 enrolled_class = models.ForeignKey("ClassList",verbose_name="所报班级")
181 consultant = models.ForeignKey("UserProfile",verbose_name="课程顾问")
182 contract_agreed = models.BooleanField(default=False,verbose_name="学员已同意合同条款")
183 contract_approved = models.BooleanField(default=False,verbose_name="合同已审核")
184 date = models.DateTimeField(auto_now_add=True)
185
186 def __str__(self):
187 return "%s %s" %(self.customer,self.enrolled_class)
188
189 class Meta:
190 unique_together = ("customer","enrolled_class")
191 verbose_name_plural = "报名表"
192
193 class Payment(models.Model):
194 ‘‘‘缴费记录‘‘‘
195 customer = models.ForeignKey("Customer")
196 course = models.ForeignKey("Course",verbose_name="所报课程")
197 amount = models.PositiveIntegerField(verbose_name="数额",default=500)
198 consultant = models.ForeignKey("UserProfile")
199 date = models.DateTimeField(auto_now_add=True)
200
201 def __str__(self):
202 return "%s %s" %(self.customer,self.amount)
203
204 class Meta:
205 verbose_name_plural = "缴费记录"
206
207 class UserProfile(models.Model):
208 ‘‘‘账号表‘‘‘
209 user = models.OneToOneField(User)
210 name = models.CharField(max_length=32)
211 roles = models.ManyToManyField("Role",blank=True,null=True)
212
213 def __str__(self):
214 return self.name
215
216 class Role(models.Model):
217 ‘‘‘角色表‘‘‘
218 name = models.CharField(max_length=32,unique=True)
219 menus = models.ManyToManyField("Menu",blank=True)
220
221 def __str__(self):
222 return self.name
223 class Meta:
224 verbose_name_plural = "角色"
225
226
227 class Menu(models.Model):
228 ‘‘‘菜单‘‘‘
229 name = models.CharField(max_length=32)
230 url_name = models.CharField(max_length=64)
231
232 def __str__(self):
233 return self.name

  • 注册数据表

crm/admin.py

1 from django.contrib import admin 2 from crm import models 3 4 admin.site.register(models.Customer) 5admin.site.register(models.CustomerFollowUp) 6 admin.site.register(models.Enrollment) 7admin.site.register(models.Course) 8 admin.site.register(models.ClassList) 9admin.site.register(models.CourseRecord) 10 admin.site.register(models.Branch) 11admin.site.register(models.Role) 12 admin.site.register(models.Payment) 13admin.site.register(models.StudyRecord) 14 admin.site.register(models.Tag) 15admin.site.register(models.UserProfile) 16 admin.site.register(models.Menu)

Python manage.py makemigrations python manage.py migrate

生成数据表

  • 创建管理用户 (密码不能纯数字)


    1

    Python manage.py createsuperuser

C:\Users\MrTong\Desktop\django\EasyCRM>python manage.py createsuperuser
System check identified some issues:
WARNINGS:
crm.Customer.tags: (fields.W340) null has no effect on ManyToManyField.
crm.UserProfile.roles: (fields.W340) null has no effect on ManyToManyField.
Username (leave blank to use ‘mrtong‘):
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.

  • OK 先来登陆admin吧

  • 接下来创建几条数据吧!

数据创建完成了,但是我们发现了一个问题,我们创建了那么多字段为什么只而admin只显示了主键字段,这样的话查看数据就非常的不方便,因此我们就需要对admin进行定制了!

我们继续修改crm/admin.py

admin.py

效果显而易见 

编写自己的admin 管理系统

原文地址:https://www.cnblogs.com/xc1234/p/8474550.html

时间: 2024-11-03 16:06:54

Django CRM客户关系管理系统的相关文章

crm客户关系管理系统大约多少钱?

随着CRM在企业中的应用普遍化,不少人相信对CRM系统并不陌生,但是更多人关注的还是CRM客户关系管理系统价格如何. 其实CRM价格并不是固定的,毕竟市面上CRM系统种类众多,种类不同,价格不一样,功能不同,价格也不一样,所以CRM客户关系管理系统价格是由多方面因素影响的. 其实不同的CRM都有不同的价格,况且现在很多CRM都分模块或分版本销售,所以会出现不同的需求不同的价格.当然了选择CRM不仅仅要看价格,而且要看这套CRM是否符合自己公司的具体需求.可以尝试多去试用,多去对比,找出适合自己企

最好用的CRM客户关系管理系统

佳网CRM客户关系管理系统我们致力于解决企业客户管理,提高企业的办事效率,为企业提供一站式服务化繁为简: 统一管理,不再分散 解决客户资料分散于业务员个人的问题,现在每个人一个帐号,客户资料统一管理 权限设置细化明确 不同部门设置不同的菜单权限,不同的员工级别设置不同的操作权限 精准定位,多条件查找 根据级别.合同状态.所属业务员.跟单状态等不同条件快速查找客户资料 客户资料随身而行 移动端全功能支持,随时随地看客户.跟单.订单.合同资料 实时消息提醒 第一时间通知与您相关的新消息,即刻加入企业

CRM客户关系管理系统如何分析客户的动态需求

由于激烈的市场竞争,对于怎样掌握客户的动态需求,怎样保持客户市场的稳定增长,对于企业来说已经成为普遍的关注点.CRM客户关系管理系统经过了10年的发展历程,怎样管理客户.了解客户成就了CRM客户关系管理系统的大市场. CRM供货商一般侧重于宣扬软件的特性及功用,而对其全体价值则没有做出了解的表述. 用户高档处理层一般从基础设施安顿而非运营和战略视点对待CRM客户关系管理系统施行. 由于无法从运营和战略视点安顿CRM客户关系管理系统,用户对CRM的价值认知只停留在技术功率层面上. 只需跨过技术和流

CRM客户关系管理系统商业项目

本课程共33讲,购买课程后,可以下载项目需求分析文档,数据库设计文档,完整的项目源代码,数据库文件等资料,系统采用jsp,servlet,js,ajax,jquery,easyui,mysql数据库等相关技术实现,所有代码均为原生态,无第三方插件,系统稳定,高效,快捷,本系统是专门针对各种中小型企业量身定做的CRM客户关系管理系统,为企业管客户,管商机,管销售,从而推动业务进展,提高工作效率,管理大数据. 项目主要功能有客户管理,合同管理,合同附件管理,合同预览(放大缩小),订单管理,商务洽谈,

CRM客户关系管理系统商业项目视频课程

本课程共33讲,购买课程后,可以下载项目需求分析文档,数据库设计文档,完整的项目源代码,数据库文件等资料,系统采用jsp,servlet,js,ajax,jquery,easyui,mysql数据库等相关技术实现,所有代码均为原生态,无第三方插件,系统稳定,高效,快捷,本系统是专门针对各种中小型企业量身定做的CRM客户关系管理系统,为企业管客户,管商机,管销售,从而推动业务进展,提高工作效率,管理大数据. 项目主要功能有客户管理,合同管理,合同附件管理,合同预览(放大缩小),订单管理,商务洽谈,

CRM客户关系管理系统需求分析文档

系统简介 本软件采用现在流行的WEB架构开发,主要针对中小型公司.管销售,管客户,管商机:可以在任何能上网的地方登录使用,使用简单,功能强大,方便快捷,丰富完善的报表功能,极大的提高公司的运营效率,不会因为人员的变动而导致数据的丢失,对公司的日常业务,问题追责等提供详细数据,对于公司领导可以做到"一表知天下",具体功能如下:1.客户管理:1.1.有非常完善的客户资料信息,对不同的客户进行分类管理,如普通客户,VIP客户,成交客户和潜在客户等1.2.对客户的每次来电,拜访情况可以做详细的

CRM客户关系管理系统如何推动企业走向成功

随着我国互联网信息技术水平的不断提高,crm客户关系管理系统发展迅速.许多的企业对crm系统进行了引进,帮助企业赢得收益与未来,那crm系统如何帮助企业走向成功的呢?下面我们一起来看看. 一.集中保存客户信息客户无疑是企业发展的根本,crm系统拥有强大的客户信息管理的能力,可以详细记录客户信息,对客户的信息进行集中管理和共享,防止出现因业务调整或人员的流动而产生客户资源或数据的流失:同时,crm系统能够保证客户信息的完整,积累企业的宝贵财富.让企业从现有客户中获取更多市场份额,让客户生命周期发挥

CRM客户关系管理系统-需求概设和详设

大概设计 大概设计就是对需求进行一个整体性分析,把需要实现的功能都列出来,对于客户关系管理系统,我们需要从角色出发,从而确定有哪些需求,最好是画个思维导图 首先我们是为培训学校这么一个场景来开发的,所以有:学生,讲师,销售,老板这么四个角色,那接下来,我们就要对这几个角色需要实现哪些功能逐一分析了 第一个,学生,1.交作业 2.查成绩 3.请假 4.合同 5.我的推荐 6.投诉建议 第二个,讲师, 1.上课点名 2.批作业 3.创建上课记录 4.查看班级成绩 5.课时申报 6.问卷调查 第三个,

CRM客户关系管理系统 北京易信软科信息技术有限公司

北京易信软科信息技术有限公司 推出大型erp系统,库存管理系统,客户关系管理系统,车辆登记管理系统,员工管理系统,采购管理系统,销售管理系统,为您的企业提供最优质的产品服务 北京易信软科您可信赖的北京软件研发服务商,公司团队有多年应用软件设计制作及开发经验,为各大企业提供软件设计.制作及维护服务,为用户提供可靠高效的应用服务平台 我们通过专业的项目实施流程,为您提供优质的软件策划.软件设计制作.软件部署服务.我们的项目实施和管理流程可以最大限度的控制整个项目进度.确保项目质量 联系方式 1581