django ORM 按月分组统计
一、搭建环境,准备数据
1.1:新建项目
django-admin startproject Test
1.2:新建app
python manage.py startapp app
1.3:设置 settings.py
# settings.py # 允许访问的ip地址
ALLOWED_HOSTS = ['*'] # 把app添加到 INSTALLED_APPS 中
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app',
] # 配置静态文件存放地址,然后在对应位置新建文件夹,由于我的django版本是3.x,所以路径是这种写法
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
1.4:创建数据库模型,由于只是示例,所以简单点
# models.py from django.db import models # Create your models here.
class AppModel(models.Model):
name = models.CharField(max_length=20)
date = models.DateField() def __str__(self):
return self.name
1.5:因为要添加数据,感觉用admin后台很方便,所以就配置下admin
# admin.py from django.contrib import admin
from app.models import AppModel # Register your models here. @admin.register(AppModel)
class AppAdmin(admin.ModelAdmin):
list_display = ['name', 'date']
1.6:迁移、生成数据表,创建管理员账户
python manage.py makemigrations python manage.py migrate python manage.py createsuperuser
1.7:运行项目,进入后台添加数据
python manage.py runserver
以下是我添加的数据,总共6条,1条2月,5条3月

二、现在就是重点了,使用ORM按月分组,并统计每月的数量,然后以图表的形式展示出来(这样只是为了更直观)
2.1:编辑 views.py
# views.py from django.shortcuts import render
from django.views import View
from django.db.models.functions import ExtractMonth
from django.db.models import Count
from app.models import AppModelfrom pyecharts.charts import Bar # Create your views here. class AppView(View):
def get(self, request):
# ORM 实现 按月分组进行统计
data = AppModel.objects.annotate(month=ExtractMonth('date')).values('month').annotate(num=Count('name')) # 图表展示
bar = Bar()
bar.add_xaxis([f"{i['month']}月" for i in data])
bar.add_yaxis('每月离职人数统计表', [i['num'] for i in data])
bar.render('templates/render.html') return render(request, 'render.html')
2.2:配置路由 Test/urls.py
# urls.py from django.contrib import admin
from django.urls import path
from app import views urlpatterns = [
path('admin/', admin.site.urls),
path('', views.AppView.as_view()),
]
2.3:大功告成,访问路由,展示

django ORM 按月分组统计的更多相关文章
- MySql 按日,按周,按月 分组 统计数据
知识关键词:DATE_FORMAT 按天统计: SELECT DATE_FORMAT(create_time,'%Y%m%d') days, COUNT(caseid) count FROM tc_c ...
- C# 根据天、周、月汇总统计生成统计报表
先看核心代码: public List<DataEntity> SearchShopSalesReport(DateTimeOffset? dateFrom, DateTimeOffset ...
- Django之ORM操作(聚合 分组、F Q)
Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作. 键的名 ...
- Django orm进阶查询(聚合、分组、F查询、Q查询)、常见字段、查询优化及事务操作
Django orm进阶查询(聚合.分组.F查询.Q查询).常见字段.查询优化及事务操作 聚合查询 记住用到关键字aggregate然后还有几个常用的聚合函数就好了 from django.db.mo ...
- python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)
12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefaul ...
- Mysql按日、周、月进行分组统计
我们在用 Mysql 制作数据可视化图表时候,经常需要按照天.周.月等不同的粒度对数据进行分组统计.而我们的时间可能是 “2017/12/5 0:0:0” 这种准确的时间. 所以在进行分组之前我们需要 ...
- 9.17 Django ORM分组
2018-9-17 19:53:22 预习:http://www.cnblogs.com/liwenzhou/p/8343243.html 新买个蓝牙挂耳耳机,感觉不错! 放上代码 笔记什么的明天继 ...
- django 分组统计遇见的问题
在使用 django 的时候发现了一个坑 例如: In [54]: print(F.objects.all().values("age").annotate(fff=Count(& ...
- Django ORM那些相关操作zi
Django ORM那些相关操作 一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs) ...
- Django学习笔记之Django ORM相关操作
一般操作 详细请参考官方文档 必知必会13条 <> all(): 查询所有结果 <> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <> ...
随机推荐
- 第一百一十三篇: JS数组Array(二)数组方法 栈、队列、排序
好家伙, 在上一篇中,我们知道了, JS的数组中每个槽位可以存储任意类型的数据 那么,我们能通过数组去模仿某些数据结构吗? 答案是肯定的 1.栈方法 ECMAScript 给数组提供几个方法,让 ...
- 【Azure 事件中心】向Event Hub发送数据异常 : partitionId[null]: Sending messages timed out
问题描述 在使用Java 代码向 Azure Event Hub发送数据时,先后遇见了如下两种异常消息: 1)ERROR c.t.d.h.s.source.EventHubLogConsumer - ...
- 【Azure 应用服务】Python Function App重新部署后,出现 Azure Functions runtime is unreachable 错误
问题描述 Python Function App重新部署后,出现 Azure Functions runtime is unreachable 错误 问题解答 在Function App的门户页面中, ...
- C#多线程(7):手动线程通知
目录 区别与示例 ManualResetEvent 类 ManualResetEventSlim 区别与示例 AutoResetEvent 和 ManualResetEvent 十分相似.两者之间的区 ...
- 基于Ant Design设计语言的WinForm UI界面库
前言 经常在技术群里看到有小伙伴提问:WinForm有什么好看.开源的UI库推荐的吗?,今天大姚给大家分享一款基于Ant Design(使用Ant Design 5.0)设计语言.开源(Apache ...
- 【专业技能】程序员的软件工程素养之画好 UML 时序图
目录 前言 一.认识时序图 1.1时序图元素 1.2怎么使用 二.画好时序图 2.1一般步骤 2.2举个例子 2.3推荐工具 三.其它作用 四.文章小结 前言 笔者在本科的时候上过软件工程的专业课,也 ...
- 小工具 --- 百度翻译API翻译工具
引言 最近想把一些英文官方文档的资料翻译成中文,然后转化为Markdown文档,然后发现百度通用翻译的API有不错的免费额度,个人申请也能申请到高级版.这个额度足够个人的日常使用了. 如何使用 如何使 ...
- XAF Blazor FilterPanel
前言 XAF列表视图(ListView)中的过滤(Filter),可以在ListView模型的Filters节点中添加,添加的过滤项(FilterItem)会在列表视图的工具栏中以下拉列表的形式显示, ...
- 手动将jar包安装到本地仓库并使用tomcat运行
参考,欢迎点击原文:https://www.cnblogs.com/panchanggui/p/10696458.html 公司有个老项目是spring的,要我们自己本地安装,我发现我maven一直报 ...
- 14_编译FFmpeg
本文来详细讲解一下:如何在Mac.Windows环境下成功编译FFmpeg. 目标 这里先提前说明一下,最后希望达到的效果: 编译出ffmpeg.ffprobe.ffplay三个命令行工具 只产生动态 ...