zoukankan      html  css  js  c++  java
  • 【转】Django之Model层的F对象,Q对象以及聚合函数

    转自:https://blog.csdn.net/wsy_666/article/details/86692050


    一.F对象:

    作用:用于处理类属性(即model的某个列数据),类属性之间的比较。
    使用之前需要先导入:
    from django.db.models import F
    例1:查询图书阅读量大于评论量图书信息。

    BookInfo.objects.filter(bread__gt=F('bcomment'))

    **例2:**查询图书 阅读量大于2倍评论 量图书信息。

    BookInfo.objects.filter(bread__gt=F('bcomment')*2)

    二.Q对象:
    作用:用于查询时条件之间的逻辑关系。not and or,可以对Q对象进行& | ~操作。
    使用之前需要先导入:
    from django.db.models import Q
    例1: 查询id大于3且阅读量大于30的图书的信息。

    写法1:BookInfo.objects.filter(id__gt=3,bread__gt=30)
    写法2:BookInfo.objects.filter(Q(id__gt=3)&Q(bread__gt=30))


    例2:查询id大于3或者阅读量大于30的图书的信息。

    BookInfo.objects.filter(Q(id__gt=3)|Q(bread__gt=30))

    例3:查询id不等于3图书的信息。

    BookInfo.objects.filter(~Q(id=3))


    三.聚合函数:
    作用:对查询结果进行聚合操作。
    sum count avg max min
    1. aggregate:
    调用这个函数来使用聚合。 返回值是一个字典

    使用前需先导入聚合类:
    from django.db.models import Sum,Count,Max,Min,Avg

    例1:查询所有图书的数目。

    BookInfo.objects.all().aggregate(Count('id'))

    例2:查询所有图书阅读量的总和。

    BookInfo.objects.all().aggregate(Sum(‘bread’))

    2.count函数: 返回值是一个数字
    作用:统计满足条件数据的数目。
    **例1:**统计所有图书的数目。

    BookInfo.objects.count()

    **例2:**统计id大于3的所有图书的数目。

    BookInfo.objects.filter(id__gt=3).count()

    总结:
    使用F对象导入:from django.db.models import Q
    使用Q对象导入:from django.db.models import F
    使用聚合函数对导入聚合类:from django.db.models import Sum,Count,Max,Min,Avg 等等

  • 相关阅读:
    mysql锁表与解锁
    问题汇总
    安装一台Centos7桌面版的跳板机
    Centos7二进制部署k8s-v1.20.2 ipvs版本(部署mysql、nacos)
    Centos7二进制部署k8s-v1.20.2 ipvs版本(Prometheus监控k8s)
    CV2 安装异常
    PostgreSQL VACUUM 没有效果(无法清理死元组)的原因
    SQL Server 进程运行状态解析
    mysql 几种启动和关闭mysql服务的方法和区别
    MySQL学习(九)小结(转载)
  • 原文地址:https://www.cnblogs.com/yoyo008/p/11477094.html
Copyright © 2011-2022 走看看