多表查询_子查询(基于对象的跨表查询)
2022/4/4 6:49:13
本文主要是介绍多表查询_子查询(基于对象的跨表查询),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# 1.查询书籍主键为1的出版社 # book_obj = models.Book.objects.filter(pk=1).first() # # 书查出版社 正向 # res = book_obj.publish # print(res) # print(res.name) # print(res.addr) # 2.查询书籍主键为2的作者 # book_obj = models.Book.objects.filter(pk=2).first() # # 书查作者 正向 # # res = book_obj.authors # app01.Author.None # res = book_obj.authors.all() # <QuerySet [<Author: Author object>, <Author: Author object>]> # # print(res) # 3.查询作者jason的电话号码 # author_obj = models.Author.objects.filter(name='jason').first() # res = author_obj.author_detail # print(res) # print(res.phone) # print(res.addr) """ 在书写orm语句的时候跟写sql语句一样的 不要企图一次性将orm语句写完 如果比较复杂 就写一点看一点 正向什么时候需要加.all() 当你的结果可能有多个的时候就需要加.all() 如果是一个则直接拿到数据对象 book_obj.publish book_obj.authors.all() author_obj.author_detail """ # 4.查询出版社是东方出版社出版的书 # publish_obj = models.Publish.objects.filter(name='东方出版社').first() # 出版社查书 反向 # res = publish_obj.book_set # app01.Book.None # res = publish_obj.book_set.all() # print(res) # 5.查询作者是jason写过的书 # author_obj = models.Author.objects.filter(name='jason').first() # 作者查书 反向 # res = author_obj.book_set # app01.Book.None # res = author_obj.book_set.all() # print(res) # 6.查询手机号是110的作者姓名 # author_detail_obj = models.AuthorDetail.objects.filter(phone=110).first() # res = author_detail_obj.author # print(res.name) """ 基于对象 反向查询的时候 当你的查询结果可以有多个的时候 就必须加_set.all() 当你的结果只有一个的时候 不需要加_set.all() 自己总结出 自己方便记忆的即可 每个人都可以不一样 """
总结规律:
正向查询:外键字段在自己表中的就是正向
反向查询,外键字段不在自己表中的就是反向
多对多
正向查询:对象.字段名字 book.author.all() 为什么加all 因为查询可能会有多个作者 所以要加all 因为是多对多 所以都要加all
反向查询:对象.表面小写 author.book_set.all()为什么加all 因为查询可能会有多个作者 所以要加all 因为是多对多 所以都要加all
一对多
正向查询:对象.字段名字 book.publish 不加all 因为这里是多方查一方,查到的数据只有一个,外键字段在多的一方
反向查询:对象.表面小写 publish.book_set.all() 加all,因为这里是一方查多方,查到的数据可能是有多个的
一对一
正向查询:对象.字段名字
反向查询:对象.表面小写 这里反向的时候不需要加_set 因为是一对一 也不需要加all
就可以看出 多对多都需要加all,一对多反向的时候需要加all 一对一_set all都不用加
这篇关于多表查询_子查询(基于对象的跨表查询)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27数据结构与算法面试题详解及练习
- 2024-12-27网络请求面试题详解与实战
- 2024-12-27数据结构和算法面试真题详解与实战教程
- 2024-12-27网络请求面试真题解析与实战教程
- 2024-12-27数据结构和算法大厂面试真题详解与实战指南
- 2024-12-27TS大厂面试真题解析与应对策略
- 2024-12-27TS大厂面试真题详解与解析
- 2024-12-27网站安全入门:如何识别和修复漏洞
- 2024-12-27SQL注入基础教程
- 2024-12-27初学者指南:理解和修复跨域漏洞