統計插件,Highcharts,以及modelformset

.modelfromset組件

1.做用:用於批量處理多個表單html

form表單對應的組件是formset前端

Modelform對應的組件是modelformsetdjango

 

2.引入函數

From django.forms.models import modelformset_factorypost

 

3.參數(沒有默認值的)spa

Model=Studengstudyrecord      #對應的模型表插件

form=Studengstudyrecordmodelform           #模型表對應的modelformcode

Extra=0   #建立幾個添加的表單,不用就的美好與0orm

 

4.代碼:model_formset_cls=modelformset_factory(model=StudentStudyRecord,form=StudentStudyRecordModelForm,extra=0)csrf

 

5.獲取取queryset

queryset = StudentStudyRecord.objects.filter(classstudyrecord=class_study_record_id)

 

6.構建model formset

formset = model_formset_cls(queryset=queryset)

 

7.前端頁面

 1 return render(request,"record_score.html",locals())
 2 
 3  
 4 
 5 <form method="post" action="">
 6     {% csrf_token %}
 7     {{ formset.management_form }}
 8 #必定要在form表單中添加{{ formset.management_form }}
 9     <table class="table table-bordered">
10         <thead>
11         <tr>
12             <th>姓名</th>
13             <th>考勤</th>
14             <th>做業成績</th>
15             <th>做業評語</th>
16         </tr>
17         </thead>
18         <tbody>
19         {% for form in formset %}  #每個學生記錄對象
20             <tr>
21                 {{ form.id }}
22                 <td>{{ form.instance.student }}</td>  #對某一個字段,不渲染select標籤
23                 <td>{{ form.instance.get_record_display }} </td>
24                 <td>{{ form.score }} </td>
25                 <td>{{ form.homework_note }}</td>
26             </tr>
27         {% endfor %}
28         </tbody>
29     </table>
30     <input type="submit" value="保存">
31 </form>

8.提交以後的處理

 1 def post(self, request,class_study_record_id):
 2     model_formset_cls = modelformset_factory(model=StudentStudyRecord, form=StudentStudyRecordModelForm, extra=0)
 3     queryset = StudentStudyRecord.objects.filter(classstudyrecord=class_study_record_id)
 4     print("request.POST",request.POST)
 5     formset=model_formset_cls(request.POST)
 6     if formset.is_valid():
 7         formset.save()
 8 
 9     print(formset.errors)
10 
11     return redirect(request.path)

二. 銷售額知識點

1.request.GET.get(「date」,today)

獲取date,若是date取不到用today

 

2.datetime模塊

Datetime.datetime 以年月日時分秒的格式獲取時間

Datetime.date 以年月日的格式獲取時間

Datetime.time 以時分秒的格式獲取時間

Datetime.timedelta 能夠獲取時間差

:
mounth = datetime.datetime.now().date() - datetime.timedelta(weeks=4)

Timedelta的參數:

Days:

seconds:

minutes:分鐘

hours:小時

weeks:

 

3.統計插件

(1) Highcharts

在產品中心下載,下載的文件中有大量無用的實例,其中的code文件纔是核心文件

引用時,引用的是code文件中的highchart.js

圖標所放的位置用插件中給出的佔位

1 <div id="container" style="width:400px;height:400px"></div>

核心代碼放在script

 1 <script>
 2     var chart = Highcharts.chart('container', {
 3         chart: {
 4             type: 'column'
 5         },
 6         title: {
 7             text: '成單數'
 8         },
 9         xAxis: {
10             type: 'category',
11             labels: {
12                 rotation: -45  // 設置軸標籤旋轉角度
13             }
14         },
15         yAxis: {
16             min: 0,
17             title: {
18                 text: '成單個數'
19             }
20         },
21         legend: {
22             enabled: false
23         },
24         tooltip: {
25             pointFormat: '成單數: <b>{point.y} 個</b>'
26         },
27         series: [{
28             name: '總人口',
29             data: [[1],[2],[3]],
30             dataLabels: {
31                 enabled: true,
32                 rotation: -90,
33                 color: '#FFFFFF',
34                 align: 'right',
35                 format: '{point.y:.1f}', // :.1f 爲保留 1 位小數
36                 y: 10
37             }
38         }]
39     });
40 </script>

注意:插件對數據的格式要求嚴格,必定要將數據轉換成插件所須要的格式

(2)Echarts

原理同highchart

4.將四個視圖函數合成一個視圖函數(利用字典作條件區分)

1 condition={
2     "today":[{"pay_date__gte":now},{"pay_date__lte":now},{"customers__pay_date__gte":now},{"customers__pay_date__lte":now}],
3     "yesterday":[{"pay_date__gte":now-yesterday},{"pay_date__lte":now-yesterday},{"customers__pay_date__gte":now-yesterday},{"customers__pay_date__lte":now-yesterday}],
4     "week":[{"pay_date__gte":now-week},{"pay_date__lte":now},{"customers__pay_date__gte":now-week},{"customers__pay_date__lte":now}],
5     "mounth":[{"pay_date__gte":now-mounth},{"pay_date__lte":now},{"customers__pay_date__gte":now-mounth},{"customers__pay_date__lte":now}],
6            }
相關文章
相關標籤/搜索