名词的约定

一对多关系中,一方对应的类叫做一类,多方对应的类叫做多类

多类中定义的属性,叫做关联属性

本节例子

图书类 BookInfo

英雄类 HeroInfo

利用模型类联表查询

需要一方的结果,但是要根据多方的条件来查


需要多方的结果,但是需要通过一方的条件来查


查询演练

》理解双下划线的关系

  • 类名__字段

英雄类名__字段名

相当于在说:

英雄表的字段

例如:

heroinfo__hcomment

指英雄表中hcomment字段

  • 字段__条件 = 值

相当于在说

字段怎么样怎么样 这个值

例如:

hcomment__contains=“八”

指 hcomment字段包含八

django-关联查询-通过模型类跨表关联查询_字段
当前的查询语句是在说

要查找一些图书

条件是这些书所对应的

英雄表中hcomment字段里包含八

图书类.objects.filter(英雄类__英雄类属性__查询条件=值)

图书是一方,图书类中没有关联字段。所以过滤的条件中需要手动的把它关联的多方类名写上去

》查找一方行对象,通过多方的条件来查

django-关联查询-通过模型类跨表关联查询_字段名_02
查找一个图书

要求是

它关联的英雄中,id值大于3的

图书是一方,图书类中没有关联字段。所以过滤的条件中需要手动的把它关联的多方类名写上去

》查找多方行对象,通过一方的条件来查

下面两种情况,效果是一样的

django-关联查询-通过模型类跨表关联查询_字段名_03
模型类查询的分析

查的是英雄,英雄是多方

多方有关联字段

可以通过关联字段直接找到对应的对象

因此

django-关联查询-通过模型类跨表关联查询_类名_04

django-关联查询-通过模型类跨表关联查询_一对多_05