Django之模型三
来源:互联网 发布:全职代放淘宝浏览单 编辑:程序博客网 时间:2024/05/19 12:26
下面继续介绍数据库的一些应用:
Values获取字典形式的结果。
ret=Person2.objects.values('name','age')
结果如下,可以看到类型其实还是QuerySet还不是字典的形式
可以先将类型转成List的形式。
ret=list(Person2.objects.values('name','age'))[0]
Values_list获取元组形式结果
Annotate进行聚合,计数,平均数,求和等
首先我们来看下有多少个对象:
定义查询所有的函数:
def show_all(request):
info_dict={} all=Person2.objects.all() for a in all: info_dict[a.name]=a.age return render(request,'index.html',{'all_info':info_dict})
反馈如下:可以看到有3个对象,年龄分别是32,20,30
下面首先来计算人物的个数:
首先引入模块:django.db.models里面包含所有的计算函数
from django.db.models import *def inquery_by_annotate(request): ret=Person2.objects.all().values('name').annotate(count=Count('name')).values('name','count') return render(request,'index.html',{'ret':ret})上面的代码统计每个名字出现的次数。Annotate代表以某个元素进行聚类的意思。这里是以每个名字的次数进行聚类。返回结果如下。可以看到出现的次数都是1
假设我们建立多个名字叫zhf的人但是年龄不一样。那么看下得到的结果是什么。如下建立了3个名字叫zhf的,但是年龄分别是30,28,30
再次查询得到如下结果:可以看到zhf的count变成了3
我们还可以通过聚类求平均,如下:
ret=Person2.objects.all().values('name').annotate(avg=Avg('age')).values('name','avg')
单看这个函数比较难以理解,我们来看下对应的sql代码是多少:
ret=Person2.objects.all().values('name').annotate(avg=Avg('age')).values('name','avg').query从下面的sql就比较明确了。从person2中根据name进行分组,然后求出平均年龄
0 0
- Django之模型三
- django学习之三:model模型创建
- Django模型设计详解系列之三
- Django之模型
- Django之模型二
- 7.17 Django学习之模型
- Django教程之十一-----模型
- Django(三)模型与数据库
- Django学习总结之五-模型
- Django 之 (6)模型(数据库)
- Django学习之模型的操作详解
- Django中模型查询系列之十五
- DJANGO模型
- Django:模型
- Django 模型
- Django-模型
- Django 模型
- Django 模型
- 整除数(不知道具体名字叫什么)
- Guava ListenableFuture 小试牛刀
- Spring入门6——hibernate
- 二叉搜索树
- Linux nginx安装
- Django之模型三
- 小程序
- 网易云课堂JAVA入门第一季中学生分数管理代码记录
- jvm一些知识
- ok6410 tftp使用
- 【bzoj 4300】绝世好题
- 【错误异常】Android Do you want to uninstall the existing application?
- 【kibana源码解析】-src/optimize/babelOptions.js
- [数据结构基础] 链表