一、搭建环境,准备数据

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 按月分组统计的更多相关文章

  1. MySql 按日,按周,按月 分组 统计数据

    知识关键词:DATE_FORMAT 按天统计: SELECT DATE_FORMAT(create_time,'%Y%m%d') days, COUNT(caseid) count FROM tc_c ...

  2. C# 根据天、周、月汇总统计生成统计报表

    先看核心代码: public List<DataEntity> SearchShopSalesReport(DateTimeOffset? dateFrom, DateTimeOffset ...

  3. Django之ORM操作(聚合 分组、F Q)

    Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作.   键的名 ...

  4. Django orm进阶查询(聚合、分组、F查询、Q查询)、常见字段、查询优化及事务操作

    Django orm进阶查询(聚合.分组.F查询.Q查询).常见字段.查询优化及事务操作 聚合查询 记住用到关键字aggregate然后还有几个常用的聚合函数就好了 from django.db.mo ...

  5. python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

    12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefaul ...

  6. Mysql按日、周、月进行分组统计

    我们在用 Mysql 制作数据可视化图表时候,经常需要按照天.周.月等不同的粒度对数据进行分组统计.而我们的时间可能是 “2017/12/5 0:0:0” 这种准确的时间. 所以在进行分组之前我们需要 ...

  7. 9.17 Django ORM分组

    2018-9-17 19:53:22 预习:http://www.cnblogs.com/liwenzhou/p/8343243.html 新买个蓝牙挂耳耳机,感觉不错! 放上代码  笔记什么的明天继 ...

  8. django 分组统计遇见的问题

    在使用 django 的时候发现了一个坑 例如: In [54]: print(F.objects.all().values("age").annotate(fff=Count(& ...

  9. Django ORM那些相关操作zi

    Django ORM那些相关操作   一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs) ...

  10. Django学习笔记之Django ORM相关操作

    一般操作 详细请参考官方文档 必知必会13条 <> all(): 查询所有结果 <> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <> ...

随机推荐

  1. Unity3D之OnTriggerEnter和OnCollisionEnter

    OnCollisionEnter方法要求碰撞的发起方必须拥有刚体,而被碰撞方有没有刚体并不重要; OnTriggerEnter方法则对此没有要求,只需要碰撞双方有一个具有刚体即可触发,当有物体勾选is ...

  2. 【Azure 微服务】Azure Service Fabric 因证书问题而使得 Node 一直处于 Down 状态

    问题描述 Service Fabric 集群更新证书后,重启Node后就变为Down的状态,反复 Restart 结果反复Down 问题分析 根据Service Fabric的文档表示,修改证书时一定 ...

  3. RPA是啥?是干嘛的?如何入门开始使用?(一)

    1.RPA是啥? 我们先对RPA有一个大概的了解,再循序渐进. Robotic Process Automation(机器人流程自动化,简称RPA). 我的简单理解就是自动化,类似于按键精灵,相对来说 ...

  4. 深入解析ASP.NET Core MVC的模块化设计[下篇]

    ASP.NET Core MVC的"模块化"设计使我们可以构成应用的基本单元Controller定义在任意的模块(程序集)中,并在运行时动态加载和卸载.<设计篇>介绍了 ...

  5. 子序列&子串

    子序列:子序列就是在原来序列中找出一部分组成的序列 子序列不一定连续 子串:字符串中任意个连续的字符组成的子序列称为该串的子串 子串一定连续

  6. kafka---面经

    kafka深入理解 消息队列 作用,优点? 异步:比如查看文章,点赞收藏评论等操作,提升文章热度,提升个人社区贡献度,提升个人社区积分,刷新社区贡献度排行榜.将其他操作放到消息队列,相应的模块从消息队 ...

  7. sqlserver 查看执行计划

    -- 清除执行计划缓存 DBCC FREEPROCCACHE -- 查看缓存执行计划 SELECT * FROM sys.dm_exec_cached_plans as p CROSS APPLY s ...

  8. aardio用udp获取最佳本机IP地址

    此方法在有多个网络接口的时候,例如部分虚拟网卡的情况,获取最合适的本地ip. 用UDP连接虚假IP地址以获取返回的本机IP import wsock.udp.client; import consol ...

  9. H3C-IP路由器

    定义 路由器负责将数据报文在IP网段之间进行转发 路由器负责将数据报文在IP网段之间进行转发 路由是指导路由器如何进行数据转发的路径信息 作用 路由器负责将数据报文在逻辑网段间进行转发 路由器是指导路 ...

  10. nuxt3前端开发教程

    源码请移步:springboot+vue3+nuxt3+ts+minio开发的dsblog3.0前后端博客 - java大师 (javaman.cn) 目录结构如下: 一.nuxt3配置文件 这段代码 ...