美文网首页
2018-12-01 模型

2018-12-01 模型

作者: MW演员 | 来源:发表于2018-12-01 16:03 被阅读0次

    查询集:表示从数据库中获取的对象集合
    查询集可以有多个过滤器

    1. 在管理器上调用过滤方法

    2. 查询集经过过滤器筛选后返回一个新的查询集,所以可以写链式调用

    3. 惰性执行 -- 创建查询集不会带来任何数据库的访问直到调用数据时,才会访问数据

    4. 直接访问数据的情况
        迭代
        序列化
        与if合用

    5. 返回查询集的方法就是过滤器
      all()
      filter() -- 返回符合条件的数据
        filter(键=值,键=值)
        filter(键=值).filter(键=值)
        以上写法条件都是且关系

    6. exclude() -- 过滤掉符合条件的数据

    7. order_by() -- 排序

    8. values() -- 一条数据就是一个对象(字典),一返回一个列表

    9. 返回单个数据
        get() -- 返回一个满足条件的对象,如果没有找到符合条件的对象,会引发一个模型类异常(未找到异常),如果找到对个对象也会引发一个异常

    10. count() -- 返回当前查询集中的对象个数

    11. first() -- 返回查询集中的第一个对象

    12. last() -- 返回查询集中的最后一个对象

    13. exists() -- 判断查询集中是否有数据,有返回true否则返回false

    14. 限制查询集 -- 返回列表,可以使用下标的方法进行限制,等同于sql中的limit语句
      注意:下标不能是负数

    15. 查询集的缓存 -- 每个查询集都包含一个缓存,来最小化的对数据库访问(减少数据库的查询压力)
      在新建的查询集中,缓存是为空,第一次对查询集求值(直接访问数据库),此时会发生缓存,在下次访问相同的数据时,会优先访问缓存

    16. 字段查询 -- 实现了sql中的where语句,作为过滤器的参数(条件)
      语法:属性名__比较运算符=值
      如:age__gt=20
      查询外键:属性名_id
      转义:sql中的like语句中的%为通配符(模糊查询),如果需要向匹配%则需要转移name__contains='%'
      比较运算符
         exact -- 判断,大小写敏感
         contains -- 是否包含,大小敏感
         startswith/endswith -- 以什么开头/以什么结尾
         以上加上一个i就表示不区分大小写
         isnull/isnotnull -- 是否为空/不为空
         in -- 是否包含在范围内
         gt/gte/lt/lte/ -- 大于、大于等于、小于、小于等于
         year/month/day/week_day/hour/minute/second -- 时间相关
         关联查询 -- 类sql中的内关联和外关联
         查询快捷 -- pk -- 主键

      聚合函数 -- 使用aggregate()函数返回的值
         AVG
         Count
         Max
         Min
         Sum

      F对象 -- 支持算数运算和相同对象间的字段比较

      Q对象 -- 过滤器中的方法中的关键字参数,最要做条件组合(且 &、或 | 、非 ~ )
      只有一个Q对象时就是用于单条件过滤(有跟没有一样)

    相关文章

      网友评论

          本文标题:2018-12-01 模型

          本文链接:https://www.haomeiwen.com/subject/wjkrcqtx.html