学习笔记——Django项目中关联查询以及关联查询的筛选
2022-10-01
关联查询:
在Django项目中使用ORM模式设置表后,进行关联查询,即两个表直接有联系的查询。
方式:
可以通过主表查询从表,也可以通过从表查询主表。
----------------
方式一实例:
(1)查询编号为1的图书中的人物
前提环境,进入pycharm,进入虚拟环境、进入shell环境。
首先,需要导入模块,先查询书籍编号为1的图书,后在此书中查询包含的人物。
from book.models import BookInfo1
book = BookInfo1.objects.get(id = 1)
通过主表查询从表信息
book.personinfo_set.all()
注:我的天呐,姐妹们,要注意了,“personinfo_set”后面是没有括号的,不加括号类似于系统默认给定的属性值。大早上的,搞人心态,晕~~~。
说明:其中"personinfo"表中的字段有“id”、“name”、“gender”、“description”、“is_delete”、“book_id”。
--------------------
方式二:
通过从表查看主表,查询人物为1的书籍信息
导入模块,先查询到人物编号为1的记录,在查询信息。
from book.models import PersonInfo
person = PersonInfo.objects.get(id = 1)
person.book
查看所在书籍的名称
person.book.name
------------------------------------------
关联查询的筛选
两种方式:
同上,筛选条件一种是通过主表查询从表,一种是通过从表查询主表。
方式一:
实例:查询图书,要求人物中包含“顾里”
同理,首先需要导入模块,
from book.models import BookInfo1
进行查询:
BookInfo1.objects.filter(personinfo__name = "顾里")
说明:使用到“关联模型表的小写”是因为“BookInfo”是一个主表,默认包含了“personinfo”。如果表中含有外键,那么它是一个从表。
-----------------
方式二:
通过从表查看主表
实例:查询人物,要求是编号为1的书籍中
首先,同理,还是先导入模块,之后由于是从表中所以内部包含了外键,直接通过包含外键的属性“book”进行调用。
from book.models import PersonInfo
PersonInfo.objects.filter(book__id = 1)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南