基本思路
销售 ------->使用的是customer表来操作
有两个页面:
未成交的客户
公共客户页面 --- 什么属于? --> 三天未跟进,及十五天内未成交
url --- > http://127.0.0.1:8080/stark/app01/customer/public/
我的客户页面(个人)
公共客户页面逻辑处理
1:构建新的url(stark.py)
# 新增的url def extra_url(self): temp=[] temp.append(url("cancel/(\d+)/(\d+)/$",self.cancel_course)) # 销售的公共客户页面url temp.append(url("public/$",self.public_customers)) return temp
2:视图 (注意视图,必须传一个request参数)
Q查询为数据库的
def public_customers(self,request): from django.db.models import Q import datetime current_date=datetime.datetime.now() # 获取当前日期 delta_15d=datetime.timedelta(days=15) # 15天 delta_3d=datetime.timedelta(days=3) # 3天 # 筛选15天未成交 或 三天未跟进的客户 且状态为未成交 # recv_date 当前课程顾问的接单日期 customer_list=Customer.objects.filter(Q(recv_date__lt=current_date-delta_15d)|Q(last_consult_date__lt=current_date-delta_3d),status=2) return render(request,"public_customers.html",locals())
3:html
公共客户列表 公共客户列表
{% for customer in customer_list %} 编号 姓名 性别 最后跟进日期 当前课程顾问 操作 {% endfor %} { { forloop.counter }} { { customer.name }} { { customer.get_gender_display }} { { customer.last_consult_date|date:"Y-m-d" }} { { customer.consultant }} 确认跟进
知识点:设置时间差
datetime模块下有4个类
datetime.date---->年月日
datetime.time----->时分秒
datetime.datetime---->年月日时分秒
datetime.timedelta--->代表两个时间之间的时间差
2:在页面显示性别,而数据库存的是代表数字0,1
{ { customer.gender }}是从数据库里面取值,为1,2在数据库的类型为choice类型 gender_choices = ((1, '男'), (2, '女'))choice类型的取值方法: get_display 是固定结构,中间加字段名字 { { customer.get_gender_display }}
我的客户页面
1:url
# 个人的客户页面temp.append(url("mycustormers/$",self.mycustormers))
2:视图处理:
# 我的客户视图 def mycustormers(self,request): user_id = 3 customer_distrbute_list = CustomerDistrbute.objects.filter(consultant_id=user_id) return render(request,"mycustormers.html",locals())
3:html
我的客户 我的客户页面
{% for customer_distrbute in customer_distrbute_list %} 编号 姓名 性别 最后跟进日期 状态 {% endfor %} { { forloop.counter }} { { customer_distrbute.customer.name }} { { customer_distrbute.customer.get_gender_display }} { { customer_distrbute.customer.last_consult_date|date:"Y-m-d" }} { { customer_distrbute.get_status_display }}
问题:在我的客户页面里面的状态需要显示更加具体的,如(十五天未成交或者三天未跟进等等)
思路:1:在原来的staus状态的添加字段。 ---->会导致前面的逻辑代码有问题
2:解决方法:添加专门为我的客户页面服务的表
1:建表
# 我的客户表状态class CustomerDistrbute(models.Model): customer = models.ForeignKey("Customer", related_name="customers") consultant = models.ForeignKey(verbose_name="课程顾问", to="UserInfo", limit_choices_to={ "depart_id": 10001}) date = models.DateField() status = ( (1, "正在跟进"), (2, "已报名"), (3, "三天未跟进"), (4, "15天未成单"), ) status = models.IntegerField(choices=status, default=1) memo = models.CharField(max_length=255)
功能完善
公共客户页面里的确认跟进功能
1:url
# 公共客户列表的确认跟进页面 temp.append(url("further_/follow/$",self.further_follow))
2:视图
# 确认跟进视图 def further_follow(self,request,customer_id): user_id=3 import datetime cdate=datetime.datetime.now() from django.db.models import Q import datetime current_date = datetime.datetime.now() delta_15d = datetime.timedelta(days=15) delta_3d = datetime.timedelta(days=3) ret=Customer.objects.filter(pk=customer_id).filter(Q(recv_date__lt=current_date-delta_15d)|Q(last_consult_date__lt=current_date-delta_3d)).update(consultant_id=3,recv_date=cdate,last_consult_date=cdate) # 防止后来的抢单 if not ret: return HttpResponse("没了") CustomerDistrbute.objects.create(customer_id=customer_id,consultant_id=user_id,date=cdate,status=1) return HttpResponse("抢单成功!")