django中的关联查询(一对多),通过模型类实现关联查询

1.查询和对象关联的数据

在一对多关系中,一对应的类我们把它叫做一类,多对应的那个类我们把它叫做多类,我们把多类中定义的建立关联的类属性叫做关联属性。

例:查询id为1的图书关联的英雄的信息。

b=BookInfo.objects.get(id=1)
b.heroinfo_set.all()

通过模型类查询:

HeroInfo.objects.filter(hbook__id=1)

例:查询id为1的英雄关联的图书信息。

h = HeroInfo.objects.get(id=1)
h.hbook

通过模型类查询:

BookInfo.objects.filter(heroinfo__id=1)

格式:

django中的关联查询(一对多),通过模型类实现关联查询_第1张图片
由一类的对象查询多类的时候:

	一类的对象.多类名小写_set.all() #查询所用数据

由多类的对象查询一类的时候:

	多类的对象.关联属性  #查询多类的对象对应的一类的对象

由多类的对象查询一类对象的id时候:

	多类的对象. 关联属性_id

2 通过模型类实现关联查询

django中的关联查询(一对多),通过模型类实现关联查询_第2张图片
例:查询图书信息,要求图书关联的英雄的描述包含’八’。

BookInfo.objects.filter(heroinfo__hcomment__contains='八')

例:查询图书信息,要求图书中的英雄的id大于3.

BookInfo.objects.filter(heroinfo__id__gt=3)

例:查询书名为“天龙八部”的所有英雄。

HeroInfo.objects.filter(hbook__btitle='天龙八部')

通过多类的条件查询一类的数据:

	一类名.objects.filter(多类名小写__多类属性名__条件名) 

通过一类的条件查询多类的数据:

	多类名.objects.filter(关联属性__一类属性名__条件名)

你可能感兴趣的:(Django,Mysql,Python)