• 【转】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 等等

  • 相关阅读:
    禅道使用-升级
    Maven 的这 7 个问题你思考过没有?
    https及证书
    Linux下查看/管理当前登录用户及用户操作历史记录
    禅道的安装
    Linux添加/删除用户和用户组
    Spring注解@Component、@Repository、@Service、@Controller区别 .
    myeclipse,eclipse打开当前文件所在文件夹
    java开发常用工具
    Django环境搭建之安装mod_wsgi模块
  • 原文地址:https://www.cnblogs.com/yoyo008/p/11477094.html
Copyright © 2020-2023  润新知