Django学习之模型层---多表操作之查(一)

1>基于对象的跨表查询

    基于对象的跨表查询,转换成sql语句就相当sql的子查询,以一条sql的输出作为另一条sql的筛选条件

    目前的表结构及数据如下(数据随意插入,小说迷请无视):

    

    以几个例子来切入,如下

2>一对多

     一对多的正向查询:比如,查询【陆小凤传奇-上】这本书的出版社的名字

     何为正向查询:当查询是从关联字段所在表开始的查询称为正向查询,如上,查一本书对应的出版社,书跟

    出版社是一对多关系(一个出版社对应多本书),关联字段在boook里面,如下,就可以很轻松的通过该类下面

    的publish字段找到实际的出版社对象,在找它的属性,就行了,

   反之,就是反向查询, 总之记住一句话:正向查询按字段,反向查询按表名,再接下来的各类查询当中,

    会一直用到这句话。

    回到上面的查询:查询【陆小凤传奇-上】这本书的出版社的名字,ORM中的写法如下

   

   一对多反向查询:查询人民出版社出版过的书籍名称

3>一对一

    一对一正向:查询古龙的电话(古龙在作者表,电话在作者详情表)

所以,肯定要通过这authorDetail字段来查找了

   一对一反向:查询电话为1111的作者名称

   

这里顺便补充一个小知识点:其实_set这个什么时候要加,为什么是加_set并不是随意而为,是有讲究的

一对多查找是,反向找多的记录,这里Django其实是告诉你,查找结果有多条记录,返回的是一个queryset

对象,所以加_set后缀,也起个提示作用,所以后面一般接all()取值,但是一对一因为就只能找到一条记录,

所以就没必要加_set了,后面也直接根据字段取值。

4>多对多

   多对多正向:查找鬼吹灯之精绝古城对应的作者都有谁,

先看下,正向查询根据哪个字段,如上,authors,查询语句如下

    多对多反向:查找作者是天下霸唱发布的所有书籍

猜你喜欢

转载自blog.csdn.net/huangql517/article/details/81195980
今日推荐