zoukankan      html  css  js  c++  java
  • django 统计表

    1.

    复杂版

    统计,通过跨表查询和timedate模块过滤找到

     1 from django.db.models import Count
     2 
     3 class TongJiView(View):
     4     def today(self):
     5         import datetime
     6         today=datetime.datetime.now().date()
     7         customer_list=Customer.objects.filter(deal_date=today)
     8 
     9         # 查询每一个销售的名字以及今天对应的成单量
    10         ret=UserInfo.objects.filter(depart_id=2,customers__deal_date=today).annotate(c=Count("customers")).values_list("username","c")
    11         print(ret)
    12         ret=[[item[0],item[1]] for item in list(ret)]
    13 
    14         return {"customer_list":customer_list,"ret":list(ret)}
    15 
    16     def zuotian(self):
    17         import datetime
    18         zuotian = datetime.datetime.now().date()-datetime.timedelta(days=1)
    19         customer_list = Customer.objects.filter(deal_date=zuotian)
    20 
    21         # 查询每一个销售的名字以及昨天对应的成单量
    22         ret = UserInfo.objects.filter(depart_id=2, customers__deal_date=zuotian).annotate(
    23             c=Count("customers")).values_list("username", "c")
    24         print(ret)
    25         print(ret)
    26         ret = [[item[0], item[1]] for item in list(ret)]
    27 
    28         return {"customer_list": customer_list, "ret": list(ret)}
    29 
    30 
    31 
    32     def week(self):
    33         import datetime
    34         today = datetime.datetime.now().date()
    35         weekdelta = datetime.datetime.now().date()-datetime.timedelta(weeks=1)
    36         customer_list = Customer.objects.filter(deal_date__gte=weekdelta,deal_date__lte=today)
    37 
    38         # 查询每一个销售的名字以及昨天对应的成单量
    39         ret = UserInfo.objects.filter(depart_id=2, customers__deal_date__gte=weekdelta,customers__deal_date__lte=today).annotate(
    40             c=Count("customers")).values_list("username", "c")
    41         print(ret)
    42 
    43         print(ret)
    44         ret = [[item[0], item[1]] for item in list(ret)]
    45 
    46         return {"customer_list": customer_list, "ret": list(ret)}
    47 
    48 
    49     def recent_month(self):
    50         import datetime
    51         today = datetime.datetime.now().date()
    52         weekdelta = datetime.datetime.now().date()-datetime.timedelta(weeks=4)
    53         customer_list = Customer.objects.filter(deal_date__gte=weekdelta,deal_date__lte=today)
    54 
    55         # 查询每一个销售的名字以及昨天对应的成单量
    56         ret = UserInfo.objects.filter(depart_id=2, customers__deal_date__gte=weekdelta,customers__deal_date__lte=today).annotate(
    57             c=Count("customers")).values_list("username", "c")
    58         print(ret)
    59 
    60         print(ret)
    61         ret = [[item[0], item[1]] for item in list(ret)]
    62 
    63         return {"customer_list": customer_list, "ret": list(ret)}
    64 
    65     def get(self,request):
    66 
    67         date=request.GET.get("date","today")
    68 
    69         if hasattr(self,date):
    70             context=getattr(self,date)()
    71 
    72         return render(request,"customer/tongji.html",context)
    后端.py
      1 <!DOCTYPE html>
      2 <html lang="zh-CN">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>Title</title>
      6     <meta name="viewport" content="width=device-width, initial-scale=1">
      7    <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
      8 
      9 </head>
     10 <body>
     11 <h3>客户成单量统计</h3>
     12 
     13 <hr>
     14 <a href="?date=today">今天</a>
     15 <a href="?date=zuotian">昨天</a>
     16 <a href="?date=week">最近一周</a>
     17 <a href="?date=recent_month">最近一个月</a>
     18 <hr>
     19 
     20 
     21 <div class="container">
     22     <div class="row">
     23         <div class="col-md-12">
     24             <table  id="example2" class="text-center table table-bordered table-hover">
     25                                         <thead>
     26                                             <tr>
     27                                                 <th class="text-center">编号</th>
     28                                                 <th class="text-center">客户姓名</th>
     29                                                 <th class="text-center">性别</th>
     30                                                 <th class="text-center">客户来源</th>
     31                                                 <th class="text-center">销售</th>
     32                                                 <th class="text-center">所报班级</th>
     33                                             </tr>
     34                                         </thead>
     35                                         <tbody>
     36 
     37                                          {% for customer in customer_list %}
     38                                              <tr>
     39                                                 <td>{{ forloop.counter }}</td>
     40                                                 <td>{{ customer.name }}</td>
     41                                                 <td>{{ customer.get_sex_display }}</td>
     42                                                 <td>{{ customer.get_source_display }}</td>
     43                                                 <td>{{ customer.consultant }}</td>
     44                                                 <td>{{ customer.get_classlist }}</td>
     45 
     46                                              </tr>
     47                                          {% endfor %}
     48 
     49 
     50                                         </tbody>
     51                                     </table>
     52             <hr>
     53             <div id="container" style="600px;height:400px"></div>
     54         </div>
     55     </div>
     56 </div>
     57 
     58 
     59 <script src="/static/highchart/highcharts.js"></script>
     60 <script>
     61     var chart = Highcharts.chart('container', {
     62                         chart: {
     63                             type: 'column'
     64                         },
     65                         title: {
     66                             text: '统计成单量'
     67                         },
     68                         subtitle: {
     69                             text: '数据截止 2017-03,来源: <a href="https://en.wikipedia.org/wiki/List_of_cities_proper_by_population">Wikipedia</a>'
     70                         },
     71                         xAxis: {
     72                             type: 'category',
     73                             labels: {
     74                                 rotation: 0  // 设置轴标签旋转角度
     75                             }
     76                         },
     77                         yAxis: {
     78                             min: 0,
     79                             title: {
     80                                 text: '成单数'
     81                             }
     82                         },
     83                         legend: {
     84                             enabled: false
     85                         },
     86                         tooltip: {
     87                             pointFormat: '成单人数: <b>{point.y} 单</b>'
     88                         },
     89                         series: [{
     90                             name: '总人口',
     91                             data: {{ ret|safe }},
     92                             dataLabels: {
     93                                 enabled: true,
     94                                 rotation: -90,
     95                                 color: '#FFFFFF',
     96                                 align: 'right',
     97                                 format: '{point.y:.1f}', // :.1f 为保留 1 位小数
     98                                 y: 10
     99                             }
    100                         }]
    101           });
    102 
    103 </script>
    104 </body>
    105 </html>
    前端

    2.简单版

     1 from django.views import View
     2 from app01.models import Customer,UserInfo
     3 from django.db.models import Count
     4 
     5 class TongJiView2(View):
     6 
     7     def get(self,request):
     8         date=request.GET.get("date","today")
     9         # func=getattr(self,date)
    10         #ret=func()
    11         import datetime
    12         now=datetime.datetime.now().date()
    13         delta1=datetime.timedelta(days=1)
    14         delta2=datetime.timedelta(weeks=1)
    15         delta3=datetime.timedelta(weeks=4)
    16 
    17         condition={
    18              "today":[{"deal_date__date":now},{"customers__deal_date":now}],
    19              "yesterday":[{"deal_date__date":now-delta1},{"customers__deal_date":now-delta1}],
    20              "week":[{"deal_date__gte":now-delta2,"deal_date__lte":now},
    21                      {"customers__deal_date__gte":now-delta2,"customers__deal_date__lte":now}
    22                      ],
    23              "recent_month":[{"deal_date__gte":now-delta3,"deal_date__lte":now},
    24                      {"customers__deal_date__gte":now-delta3,"customers__deal_date__lte":now}
    25                      ],
    26               }
    27 
    28         customer_list=Customer.objects.filter(**(condition.get(date)[0]))
    29         ret=UserInfo.objects.all().filter(**(condition.get(date)[1])).annotate(c=Count("customers")).values_list("username","c")
    30         ret = [[item[0], item[1]] for item in list(ret)]
    31 
    32         return render(request,"customer/tongji.html",locals())
    后端.py
  • 相关阅读:
    通过secureCRT连接虚拟机VMware workstation问题记录
    redis 数据类型
    windows下redis安装及配置
    js获取response头信息
    flask token认证
    IDEA 双击只选择了一个变量的某部分单词
    IDEA 对spring boot Maven 项目打 Jar 包
    ElasticSearch 7.3.0 查询、修改、删除 文档操作
    ElasticSearch Kibana 创建索引,删除索引,查看索引配置
    elasticsearch-analysis-ik windows 环境 IK 中文分词器 的 下载 和 安装
  • 原文地址:https://www.cnblogs.com/zhangqing979797/p/9991940.html
Copyright © 2011-2022 走看看