zoukankan      html  css  js  c++  java
  • ORM跨表查询总结

    一、基于对象的查询-->子查询

    1、一对多

    正向查询:基于 字段

    反向查询:基于 表名__set.all() 注意:表名全部小写

    2、多对多

    正向查询:基于 字段.all()

    反向查询:基于 表名_set.all() 注意:表名全部小写

    3、一对一

    正向查询:基于 字段

    反向查询:基于 表名 注意:表名全部小写

    二、基于QuerySet的查询-->连表
    1、正向查找: 字段
    2、反向查找: 表名

    注意:基于QuerySet的查找最重要的是找到基表,filter和values都可以进行跨表查找

    query

    直接查看ORM对应的SQL语句

    三、聚合分组

    1、聚合

    聚合被称为终止QuerySet函数,返回值是字典

    2、分组

    a、QuerySet.annotate(),annotate()前面的内容相当于,group by 条件

    b、annotate()的返回值是QuerySet 后面加values() 相当于sql语句select 字段

    c、annotate()里的内容 聚合函数+连表

    Author.objects.values(addr='nj').annotate(a= Count('book')).values(a__gt=2)
  • 相关阅读:
    MySQL多表查询
    多表关联
    MySQL数据类型 约束
    初识数据库
    socker server和 event
    os 模块 和 os模块下的path模块
    sys 模块
    time 模块
    目录规范

  • 原文地址:https://www.cnblogs.com/wt7018/p/11351846.html
Copyright © 2011-2022 走看看