首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django】聚合在Django的详细解析以及运用在企业级项目里的方法

本主题指南介绍如何使用Django查询生成返回聚合值。...在此示例中,将计算Book模型价格字段的平均值。可以QuerySet引用中找到可用聚合函数的列表。 Aggregate()是QuerySet的一个结束语句。...聚合函数中指定聚合字段时,Django允许您在筛选相关字段时使用相同的双下划线符号。Django将处理需要检索聚合相关值的任何表连接。...(num_authors=Count('authors')) annotate()filter()子句的顺序¶ 开发涉及annotate()filter()子句的复杂查询时,请特别注意应用于QuerySet...这实际意味着filter()annotate()不是可互换的操作。 例如: 出版商A有两本评分为45的书。 出版商B有两本评分为14的书。 出版商C有一本评分为1的书。

2K40
您找到你想要的搜索结果了吗?
是的
没有找到

Django学习笔记之Django ORM Aggregation聚合详解

每个对象的总结可以用方法annotate()生成: # 建立一个annotate QuerySet >>> from django.db.models import Count >>> q = Book.objects.annotate...Aggregations and other QuerySet clauses filter() and exclude() 聚合可以filterexclude一起使用: >>> from django.db.models...(num_authors=Count('authors')).filter(num_authors__gt=1) 编写一个包含annotate()filter()从句的复杂查询时,要特别注意作用于QuerySet...=Count('authors')).order_by('num_authors') values() 通常,注解annotate是添加到每一个对象的,一个执行了注解操作的查询集 QuerySet 所返回的结果中...(Count("id")) 这部分代码想通过使用它们公共的data值来分组Item对象,然后每个分组中得到id值的总数。

1.1K20

django ORM之valuesannotate使用详解

需求就是找出编号有重复的数据,只保留第一个 开始之前 使用了valuesannotate两个函数 简单的来说values可以理解成展示models指定列的值 annotate起到了group by的作用...补充知识:djangoannotate的一点使用方法 annotate 使用方法: 有时候我们需要连接两个表做一些查询,比如博客中有两个模型,一个文章模型,一个分类模型,分类模型是文章中的分类字段的外键...categories = NewsCategory.objects.annotate(num_count=Count(‘news’)) annotate中其实是给categories(Queryset...)添加了一个属性,Queryset中的每个对象都会有这么一个属性 现在可以这样查询分类下的文章数量: category.num_count() 将代码贴出来 原先的代码: def cms_news_category...}}</td {% endfor %} 以上这篇django ORM之valuesannotate使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考。

2K20

Django(19)QuerySet API

annotate annotate:给QuerySet中的每个对象都添加一个使用查询表达式(聚合函数、F表达式、Q表达式、Func表达式等)的新字段。...默认情况下会把表中所有的字段全部都提取出来,可以使用values来进行指定,并且使用了values方法后,提取出的QuerySet中的数据类型不是模型,而是values方法中指定的字段值形成的字典:...因为count底层是使用select count(*)来实现的,这种方式比使用len函数更加的高效。...如果要判断某个条件的元素是否存在,那么建议使用exists,这比使用count或者直接判断QuerySet更有效得多。...DjangoQuerySet转换为SQL语句去执行的五种情况 迭代:遍历QuerySet对象的时候,会首先先执行这个SQL语句,然后再把这个结果返回进行迭代。

71110

django orm模块中的 is_delete用法

) 这样以后咱如果要删除一条数据了,就设置一下 is_delete=1 就表示这条数据逻辑删除了,简单的说就是你再怎么搜数据库也搜不到了,如果以后还用,就再设置 is_delete=0...补充知识:django中当model设置了ordering后,使用distinct()annotate()问题记录 model类如下,我class Meta中设置了ordering = [‘-date_create...("host_name").annotate(dcount=Count(1)) p <QuerySet [{'host_name': '点2', 'dcount': 1}, {'host_name...`date_create` DESC 可以看到,所得到的结果并不像我们预期的一样,之后把执行的sql输出出来可以看到group by的时候是对host_namedate_create进行分组,原因就是因为我们...使用distinct上面的情况类似,就不列出来了。 以上这篇django orm模块中的 is_delete用法就是小编分享给大家的全部内容了,希望能给大家一个参考。

1.1K20

Django学习笔记:QuerySet API

他的方法全部都是通过Python动态添加的方式,从QuerySet类中拷贝过来的。 所以我们如果想要学习ORM模型的查找操作,必须首先要学会QuerySet的一些API的使用。...annotate:给QuerySet中的每个对象都添加一个使用查询表达式(聚合函数、F表达式、Q表达式、Func表达式等)的新字段。...默认情况下会把表中所有的字段全部都提取出来,可以使用values来进行指定,并且使用了values方法后,提取出的QuerySet中的数据类型不是模型,而是values方法中指定的字段值形成的字典:...如果想要知道总共有多少条数据,那么建议使用count,而不是使用len(articles)这种。因为count底层是使用select count(*)来实现的,这种方式比使用len函数更加的高效。...firstlast:返回QuerySet中的第一条最后一条数据。 aggregate:使用聚合函数。 exists:判断某个条件的数据是否存在。

61820

DjangoQuerySet详解

exclude() 排除满足条件的对象 annotate() 使用聚合函数 order_by() 对查询集进行排序 reverse() 反向排序 distinct() 对查询集去重...例如,如果正在操作一个Blog列表,你可能想知道每个Blog有多少Entry: >>> from django.db.models import Count >>> q = Blog.objects.annotate...当查询跨越多张表的数据时,QuerySet可能得到重复的结果,这时候可以使用distinct()进行去重。...21. using() using(alias) 如果正在使用多个数据库,这个方法用于指定在哪个数据库查询QuerySet。方法的唯一参数是数据库的别名,定义DATABASES。...对于返回大量只需要访问一次的对象的QuerySet,这可以带来更好的性能,显著减少内存使用。 请注意,已经提交了的iterator()使用QuerySet会强制它再次提交数据库操作,进行重复查询。

2.3K20
领券