当前位置: 首页 > news >正文

怀柔做网站的吗临沂搜索引擎网站推广

怀柔做网站的吗,临沂搜索引擎网站推广,佛山做seo推广公司,营销qq手机版当使用复杂的ORM方式查询时#xff0c;如果有困惑#xff0c;使用 str(queryset.query) 查看对应生成的SQL语句。 聚合和其他 QuerySet 子句 filter() 和 exclude() 聚合结果也可以使用过滤。任何应用于普通模型字段的 filter() #xff08;或 exclude()#xff09;对聚…当使用复杂的ORM方式查询时如果有困惑使用 str(queryset.query) 查看对应生成的SQL语句。 聚合和其他 QuerySet 子句 filter() 和 exclude() 聚合结果也可以使用过滤。任何应用于普通模型字段的 filter() 或 exclude()对聚合的对象也有约束效果。 当与 annotate() 子句一起使用时过滤器的效果是限制用来计算“注释”( annotate() 子句会给queryset中的对象增加一个属性和值称之为“注释”)的对象。 例如以下查询生成所有标题以 “Django” 开头的书籍的带注释列表 from django.db.models import Avg, CountBook.objects.filter(name__startswithDjango).annotate(num_authorsCount(authors))当与 aggregate() 子句一起使用时过滤器的效果是限制用来计算聚合的对象。 例如以下查询生成所有标题以 “Django” 开头的书籍的平均价格 Book.objects.filter(name__startswithDjango).aggregate(Avg(price))过滤注释 注解过的值也可以使用过滤器。注解的别名可以和任何其他模型字段一样使用 filter()和 exclude()子句。因为使用 annotate()生成的也是一个QuerySet根据链式查询的规则是可以这样的。 例如要生成一个具有多位作者的书籍列表 Book.objects.annotate(num_authorsCount(authors)).filter(num_authors__gt1)annotate() 和 filter() 子句的顺序 当开发一个涉及 annotate() 和 filter() 子句的复杂查询时要特别注意应用于 QuerySet 的子句的顺序。 当一个 annotate() 子句应用于查询会根据查询状态来计算注释。这实际上意味着 filter() 和 annotate() 不是可交换的操作。 filter()用在前面会先过滤对象再生成注释。 annotate()用在前面会先生成注释然后过滤对象在多对多的查询和一对多的反向查询时会容易观察到差异。例如 出版者A有两本评分4和5的书。出版者B有两本评分1和4的书。出版者C有一本评分1的书。 以下是一个使用 Count 聚合的示例 a, b Publisher.objects.annotate(avg_ratingAvg(book__rating)).filter( ... book__rating__gt3.0 ... )a, a.avg_rating (Publisher: A, 4.5) # (54)/2b, b.avg_rating (Publisher: B, 2.5) # (14)/2 a, b Publisher.objects.filter(book__rating__gt3.0).annotate( ... avg_ratingAvg(book__rating) ... )a, a.avg_rating (Publisher: A, 4.5) # (54)/2b, b.avg_rating (Publisher: B, 4.0) # 4/1 (book with rating 1 excluded)第一个查询请求至少有一本评分3以上的书籍的出版者的书籍平均分。第二个查询只请求评分3以上的作者书籍的平均评分。 order_by() annotate() 子句之后可以用order_by()排序因为注释相当于查询对象结果的一个属性了。 例如要按参与书籍创作的作者数量对书籍的 QuerySet 进行排序 Book.objects.annotate(num_authorsCount(authors)).order_by(num_authors)values() 通常注解值会添加到每个对象上即一个被注解的 QuerySet 将会为初始 QuerySet 的每个对象返回一个结果集。然而当使用 values() 子句来对结果集进行约束时生成注解值的方法会稍有不同。不是在原始 QuerySet 中对每个对象添加注解并返回而是根据定义在 values() 子句中的字段组合先对结果进行分组再对每个单独的分组进行注解这个注解值是根据分组中所有的对象计算得到的。 通过一个例子对比一下 查询每个作者所著书的平均评分 Author.objects.annotate(average_ratingAvg(book__rating))使用了values(name) Author.objects.values(name).annotate(average_ratingAvg(book__rating))在这个例子中作者会按名字分组所以你只能得到不重名的作者分组后计算出的注释值。如果数据中有两个作者同名那么他们原本各自的查询结果将被合并到同一个结果中两个作者的所有评分都将被计算为一个平均分。 annotate() 和 values() 的顺序 和使用 filter() 一样作用于某个查询的 annotate() 和 values() 子句的顺序非常重要。如果 values() 子句在 annotate() 之前就会根据 values() 子句产生的分组来计算注解。 然而如果 annotate() 子句在 values() 之前就会根据整个查询集生成注解。然后 values() 子句只能限制输出的字段。例如 Author.objects.annotate(average_ratingAvg(book__rating)).values( ... name, average_rating ... )这段代码将为每个作者添加一个唯一注释但只有作者姓名和 average_rating 注释会返回在输出结果中。 和 order_by() 一起用会发生化学反应 这里需要注意的一点是order_by()会影响分组。 聚合所生成的注释 你也可以在生成的注释结果上生成聚合。例如如果您想计算每本书的平均作者数量您首先要用作者数量对书籍集进行注释然后对该作者数量进行聚合 from django.db.models import Avg, CountBook.objects.annotate(num_authorsCount(authors)).aggregate(Avg(num_authors)) {num_authors__avg: 1.66}在空查询集或组上进行聚合操作时需要格外小心因为这可能会导致未定义的行为或错误。在执行聚合操作之前通常应确保查询集或组中包含足够的数据以执行所需的聚合计算。如果查询集或组为空可以使用条件语句来避免聚合错误或不必要的操作。 当对空的查询集或分组应用聚合操作时结果通常默认为其 default 参数通常是 None。这种行为发生是因为当执行的查询不返回任何行时聚合函数会返回 NULL。
http://www.zqtcl.cn/news/888030/

相关文章:

  • wordpress模板站如何安装wordpress 查询语句
  • 给窗帘做网站淄博周村学校网站建设公司
  • 关于志愿者网站开发的论文做什么网站开发好
  • 做电影网站如何规避版权做新年公告图片的网站
  • 网站修改后怎么上传济南网络员
  • 家居seo整站优化方案怎样开平台软件
  • 深圳网站关键词网站做视频转流量
  • 做网站如何配置自己的电脑精准防恶意点击软件
  • 单页网站 挣钱深圳高水平网站制作
  • 网站建设哪几家好一些打开浏览器历史记录
  • 公司里面有人员增减要去哪个网站做登记网页开发报价单
  • 网站设计的公司运营接单百度搜索引擎首页
  • 最专业的做网站公司有哪些成都龙泉建设有限公司网站
  • 云南省玉溪市建设局官方网站wordpress 迁移 空白
  • 网站空间和数据库多个织梦dedecms网站怎么做站群
  • 网站模块插件是怎么做的个人建设网站流程图
  • 作品展示的网站建设网站方案
  • 整站优化哪家专业网站漏洞解决办法
  • 怎么给自己的网站做扫描码南宁seo排名外包
  • 网站的服务器在哪里怎么建设网站啊
  • 山东做网站三五网站备案怎样提交到管局
  • 自己如何做网站教程中山企业网站推广公司
  • 网站每年费用本地同城服务平台
  • 暗网网站有那些青岛网站设计公司推荐
  • 营业执照咋做网等网站遂宁网站建设公司哪家好
  • 湖南平台网站建设找哪家重庆网站建设营销
  • wordpress搭建企业网站小型网络架构
  • 淘宝联盟链接的网站怎么做培训网站排名
  • 上海高端网站建设定制大连开发区邮编
  • 手机网站公司免费crm软件下载