class CustomerView(View):
def get(self,request):
if reverse('customer_list') == request.path:
customer_list = models.Customer.objects.all()
elif reverse('mycustomers') == request.path:
customer_list = models.Customer.objects.filter(consultant=request.user).all()
return render(request, 'customer_list.html', {'customer_list': customer_list})
def post(self,request):
print(request.POST)
func_str=request.POST.get('action')
data=request.POST.getlist('selected_pk_list')
if not hasattr(self,func_str):
return HttpResponse("非法输入")
else:
func=getattr(self,func_str)
func(data)
ret=self.get(request)
return ret
def patch_delete(self,data):
models.Customer.objects.filter(pk__in=data).update(gender=2)
urls
url(r'^customers/list/', views.CustomerView.as_view(), name='customer_list'),
url(r'^mycustomers/', views.CustomerView.as_view(), name='mycustomers'),
{% extends 'base/main.html' %}
{% block main %}
<form action="" method="post">
<ol class="breadcrumb">
<select name="action" id="" class="form-control" style="display: inline-block;width: 250px">
<option value="patch_delete">delete selected data</option>
</select>
<button style="vertical-align: 0px" class="btn btn-danger">GO</button>
</ol>
<div class="col-xs-12 row">
<table class="text-center table table-bordered table-hover">
<thead>
<tr>
<th><input type="checkbox"></th>
<th>编号</th>
<th>客户姓名</th>
<th>性别</th>
<th>QQ</th>
<th>当前薪资</th>
<th>当前状态</th>
<th>咨询日期</th>
<th>客户来源</th>
<th>销售</th>
<th>所报班级</th>
</tr>
</thead>
<tbody>
{% for customer in customer_list %}
<tr>
<td><input type="checkbox" name="selected_pk_list" value="{{ customer.pk }}"></td>
<td>{{ forloop.counter }}</td>
<td>{{ customer.name }}</td>
<td>{{ customer.get_gender_display }}</td>
<td>{{ customer.qq }}</td>
<td>{{ customer.salary }}</td>
<td>{{ customer.get_status }}</td>
<td>{{ customer.date|date:'Y-m-d' }}</td>
<td>{{ customer.get_source_display }}</td>
<td>{{ customer.consultant }}</td>
<td>{{ customer.get_classlist }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</form>
{% endblock %}
class Customer(models.Model):
"""
客户表
"""
qq = models.CharField(verbose_name='qq', max_length=64, unique=True, help_text='QQ号必须唯一')
name = models.CharField(verbose_name='学生姓名', max_length=16)
gender_choices = ((1, '男'), (2, '女'))
gender = models.SmallIntegerField(verbose_name='性别', choices=gender_choices)
education_choices = (
(1, '重点大学'),
(2, '普通本科'),
(3, '独立院校'),
(4, '民办本科'),
(5, '大专'),
(6, '民办专科'),
(7, '高中'),
(8, '其他')
)
education = models.IntegerField(verbose_name='学历', choices=education_choices, blank=True, null=True, )
graduation_school = models.CharField(verbose_name='毕业学校', max_length=64, blank=True, null=True)
major = models.CharField(verbose_name='所学专业', max_length=64, blank=True, null=True)
experience_choices = [
(1, '在校生'),
(2, '应届毕业'),
(3, '半年以内'),
(4, '半年至一年'),
(5, '一年至三年'),
(6, '三年至五年'),
(7, '五年以上'),
]
experience = models.IntegerField(verbose_name='工作经验', blank=True, null=True, choices=experience_choices)
work_status_choices = [
(1, '在职'),
(2, '无业')
]
work_status = models.IntegerField(verbose_name="职业状态", choices=work_status_choices, default=1, blank=True,
null=True)
company = models.CharField(verbose_name="目前就职公司", max_length=64, blank=True, null=True)
salary = models.CharField(verbose_name="当前薪资", max_length=64, blank=True, null=True)
source_choices = [
(1, "qq群"),
(2, "内部转介绍"),
(3, "官方网站"),
(4, "百度推广"),
(5, "360推广"),
(6, "搜狗推广"),
(7, "腾讯课堂"),
(8, "广点通"),
(9, "高校宣讲"),
(10, "渠道代理"),
(11, "51cto"),
(12, "智汇推"),
(13, "网盟"),
(14, "DSP"),
(15, "SEO"),
(16, "其它"),
]
source = models.SmallIntegerField('客户来源', choices=source_choices, default=1)
referral_from = models.ForeignKey(
'self',
blank=True,
null=True,
verbose_name="转介绍自学员",
help_text="若此客户是转介绍自内部学员,请在此处选择内部学员姓名",
related_name="internal_referral"
)
# course = models.ManyToManyField(verbose_name="咨询课程", to="Course")
status_choices = [
(1, "已报名"),
(2, "未报名")
]
status = models.IntegerField(
verbose_name="状态",
choices=status_choices,
default=2,
help_text=u"选择客户此时的状态"
)
consultant = models.ForeignKey(verbose_name="课程顾问", to='UserInfo', related_name='consultanter',
limit_choices_to={'depart_id': 1001})
course = MultiSelectField('咨询课程',choices=course_choices)
date = models.DateField(verbose_name="咨询日期", auto_now_add=True)
recv_date = models.DateField(verbose_name="当前课程顾问的接单日期", null=True)
last_consult_date = models.DateField(verbose_name="最后跟进日期", )
class_list = models.ManyToManyField('ClassList',verbose_name='已报班级')
def __str__(self):
return self.name
def get_classlist(self):
l=[]
for cls in self.class_list.all():
l.append(str(cls))
return mark_safe('<br>'.join(l))
def get_status(self):
status_color={
1:'green',
2:'orange'
}
return mark_safe("<span style='background-color:%s;color:white'>%s</span>"%(status_color[self.status],self.get_status_display()))