基于对象的跨表查询

基于对象的跨表查询
'''正向和反向查询'''
# 正向 ----> 关联字段在当前表中,从当前表向外查叫正向
# 反向 ---> 关联字段不在当前表中,当当前表向外查叫反向

'''一对一的查询'''
# 查询lqz这个人的地址 正向查询按字段
author = models.Author.objects.filter(name='qlz').first()
print(author.author_detail.addr)   #这样就获取到了地址

# 查询lqz这个人的地址 反向查询按表名小写
author = models.AuthorDetail.objects.filter(addr='武汉').first()
print(author_detail.author.name)

'''一对多的查询 正向查询按字段,反向查询按表名小写_set'''
# 出版社和书是一对多的关系,关联字段在书中
# 正向查询 查询红楼梦这本书的出版社地址
book = models.Book.objects.filter(name='红楼梦').first()
print(book.publish.addr)

# 反向查询
publish = models.Publish.objects.filter(name='南京出版社').first()
books = publish.book_set.all()   #all就是拿出所有的书
# books 是一个queryset对象
for book in books:
print(book.name)   #queryset有多个值要通过for循环取值

'''多对多的查询 书和作者是多对多,关联字段authors在book里'''
#正向查询 按字段.all
# 查询红楼梦这本书的所有作者
book=models.Book.objects.filter(name='红楼梦').first()
authors = book.authors.all()
for author in authors:
print(author.name)

# 反向查询按表名小写_set.all()
# 查询lqz写的所有书
lqz = models.Author.objects.filter(name='lqz').first()
books = lqz.book_set.all()
for book in books:
print(book)

(19)模型层 -ORM之msql 跨表查询(正向和反向查询)的更多相关文章

  1. (17)模型层 -ORM之msql 单表的增、删、改、查 及其他操作

    单表操作-增.删.改.查 ret=models.User.objects.filter(id=1)  #这里的结果是一个queryset对象 ret=modles.User.Objects.filte ...

  2. (18)模型层 -ORM之msql 多表操作(字段的属性)

    数据库表的对应关系 1.一对一   #关联字段写在那张表都可以 PS:只要写OneToOneField就会自动加一个id 2.一对多  #关系确立,关联字段写在多的一方 3.多对多   #多对多的关系 ...

  3. (20)模型层 -ORM之msql 基于双下划线的跨表查询(一对一,一对多,多对多)

    基于对象的跨表查询是子查询 基于双下划线的查询是连表查询 PS:基于双下划线的跨表查询 正向按字段,反向按表名小写 一对一 需求:查询lqz这个人的地址# 正向查询ret = models.Autho ...

  4. (21)模型层 -ORM之msql 聚合查询,F和Q(与、或、非查询)、分组查询

    什么是聚合查询,就是使用聚合函数做计算 from django.db.models import Count,Avg,Max,Min   #聚合函数要从模块中导入 from django.db.mod ...

  5. 1127 模型层orm表操作

    目录 昨日回顾 模型层 1.配置测试脚本 1.1 应用下tests文件 1.2 新建任意名称文件 2. 数据的增删改查 2.1 创建数据 2.2 修改数据 2.3 删除数据 2.4查询数据 十三门徒 ...

  6. python 全栈开发,Day70(模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介)

    昨日内容回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...

  7. Django基础(2)--模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介

    没整理完 昨日回顾: 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 ...

  8. Django模型层—ORM

    目录 一.模型层(models) 1-1. 常用的字段类型 1-2. 字段参数 1-3. 自定义char字段 1-4. 外键关系 二.Django中测试脚本的使用 三.单表操作 3-1. 添加记录 3 ...

  9. Django之模型层第二篇:多表操作

    Django之模型层第二篇:多表操作 一 表关系回顾 ​ 在讲解MySQL时,我们提到,把应用程序的所有数据都放在一张表里是极不合理的. ​ 比如我们开发一个员工管理系统,在数据库里只创建一张员工信息 ...

随机推荐

  1. laravel模型关联:

    一对一hasOne(用户-手机号) 一对多has Many(文章-评论) 一对多反向belongsTo(评论-文章) 多对多belongsToMany(用户-角色) 远层一对多hasManyThrou ...

  2. laravel本地开发的项目部署到服务器上

    不建议用ftp,建议用git.svn等工具从你的开发服务器上拉取.或者使用一些自动构建发布的工具.如果非要用ftp上传,建议用以下步骤: 服务器上安装composer,并使用`composer sel ...

  3. JS&Jquery中的循环/遍历

    JavaScript中的遍历 for 遍历 var anArray = ['one','two']; for(var n = 0; n < anArray.length; n++) { //具体 ...

  4. css3 前端开发

    一.前缀: -moz(例如 -moz-border-radius)用于Firefox -webkit(例如:-webkit-border-radius)用于Safari和Chrome. 二.CSS3圆 ...

  5. jquery 操作table样式拖动参考

    参考: http://blog.csdn.net/kdiller/article/details/6059727 http://www.jb51.net/article/59795.htm

  6. word-wrap与break-word属性的区别

    共同点 word-wrap:break-word与word-break:break-all都能把长单词强行断句 不同点 word-wrap:break-word会首先起一个新行来放置长单词,新的行还是 ...

  7. ps基础学习笔记一

    图像?表示分为位图方式和矢量图方式 位图是像素点组成,一副图像所含像素越多,图像的效果就越好 矢量图是基于一定数学方式描述,适合表示色彩较少,一色块为主,曲线简单的图像,文件小ps一般用来处理位图,c ...

  8. spring源码研究2 自定义标签实现及使用

    1.自定义标签实现及使用参考: http://blog.csdn.net/fighterandknight/article/details/50112701 1)创建一个需要扩展的组件 User.ja ...

  9. 程序包需要 NuGet 客户端版本“XXXXX”或更高版本,但当前的 NuGet 版本为“XXXXXXXXXX”

    工具 - 扩展和更新- visual studio 库

  10. L275 Climate Change Is Having a Major Impact on Global Health

    Climate Change Is Having a Major Impact on Global Health A devastating heat wave swept across Europe ...