zoukankan      html  css  js  c++  java
  • django的models模块查询方法

     

    假定models中有一个类BookInfo

    模块查询不同于sql语句,模块查询的结果会返回符合条件的整个一行的对象,或者多个对象组成的查询集。

    查询集类似列表,有相似的方法。

     

    1 model查询语句:

      1 get(条件) 查询一条   多条或者没有数据会抛出异常 返回一个BookInfo对象

    BookInfo.objects.get(id = 1)    #查询bookinfo表中id为1的数据

      2 all() 查询所有 不能加条件 返回一个查询集 类似列表,有和列表一样的方法

    BookInfo.objects.all()  #查询bookinfo表中所有的数据

      3 filter(条件) 查询符合条件的全部对象 返回一个查询集

    BookInfo.objects.filter(isDelete = false)

      4 exclude(条件) 查询不符合条件的所有 返回一个查询集

     

    2 查询条件:  模型类属性__条件 = 值 

      1 判断相等:    __exact   可以省略条件,直接 属性= 值

    BookInfo.objects.filter(id__exact = 1)  #查询表中id是1的

      2 模糊查询 包含:  __contains

    BookInfo.objects.filter( btitle__contains = "" ) #查询表中  btitle字段包含 传 的

      3 开头 结尾:  __startswith   __endwith

    BookInfo.objects.filter( btitle__endswith="")  #查询btitle 以 "" 为结尾的
    BookInfo.objects.filter( btitle__startswidth = "")

      4 空查询: __isnull    __isnotnull = True/False

    BookInfo.objects.filter( btitle__isnull = False )

      5 查询范围  __in = 元组/列表

    BookInfo.objects.filter( bid__in = [1,3,5] )

      6 比较大小 __gt大于   __gte大于等于    __lt小于    __lte小于等于

    BookInfo.objects.filter( id__gt = 3 )  # id大于3

      7 查询日期  __year  __mont __day  __weekday  __hour  __second

    BookInfo.objects.filter(bpub_date__year = 1980) # 查询1980年
    BookInfo.objects.filter( bpub_date__gt = date(1980,1,1) ) #大于指定日期

     

     

    3 多个属性的比较: 引入F对象

    #例:查询阅读量大于等于评论量的图书。
    
    from django.db.models import F
    
    list = BookInfo.books.filter(bread__gte=F('bcommet'))

     

     

    4 逻辑 与 或 非

    #例:查询阅读量大于20,并且编号小于3的图书。
    
    list=BookInfo.books.filter(bread__gt=20,id__lt=3)
    #或者
    list=BookInfo.books.filter(bread__gt=20).filter(id__lt=3)

     

    Q对象可以使用 &表示逻辑与,|表示逻辑或,~表示非not。

    from django.db.models import Q
    #例:查询阅读量大于20,或编号小于3的图书,只能使用Q对象实现
    
    list = BookInfo.books.filter(Q(bread__gt=20) | Q(pk__lt=3))
    #例:查询编号不等于3的图书。
    
    list = BookInfo.books.filter(~Q(pk=3))

     

     

    5 聚合函数:

    使用aggregate()过滤器调用聚合函数。

    聚合函数定义在django.db.models中  Avg,Count,Max,Min,Sum

    from django.db.models import Sum
    #例:查询图书的总阅读量。
    list = BookInfo.books.aggregate(Sum('bread'))
    #例:查询图书总数。
    list = BookInfo.books.count()

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

      

  • 相关阅读:
    HUSTOJ搭建后为了方便作为Judger调用进行的一些修改操作
    [转]我国古代求解最大公约数的方法-更相减损术
    [转]nodejs导出word
    Java抓取Codeforces——针对某一次提交的源码和数据
    Java以UTF-8格式读写及追加写文件示例
    C++使用fill初始化二维数组
    FNV hash算法
    vitess基础镜像构建流程Centos
    go 工具链目前[不支持编译 windows 下的动态链接库]解决方案
    binlog分析方法
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/7515982.html
Copyright © 2011-2022 走看看