一对多 多对多 查询
目录:
- 一对多
- 多对多
一对多查询
多对一查询(正向查询):
方法1:

方法2:
>>> UserInfo.objects.all().values("username", "depart__title") <QuerySet [{'username': 'alex', 'depart__title': 'IT'}, {'username': 'rick', 'depart__title': 'HR'}, {'username': 'vincen', 'depart__title': 'CE'}]> >>>
一对多查询(反向查询):
>>> d = Depart.objects.get(id=1) >>> d.userinfo_set.all() <QuerySet [<UserInfo: UserInfo object>]> >>> d.userinfo_set.all()[0] <UserInfo: UserInfo object> >>> d.userinfo_set.all()[0].username 'alex' >>>
注意: 这里使用了 userinfo_set.all()的方式来进行一对多访问。
_set获取的是一个QuerySet类型,也可进行filter,slice操作。
多对多查询
和访问外键相似,因为在Book类中定义和Author的多对多的关系,所以直接操作的是QuerySet的值,对于书和作者的多对多的关系,可以进行filter等操作,操作如下:

而在Author类中没有定义和Book的关系,因此需要使用_set进行操作(这种查询方式也称为反向查询):


浙公网安备 33010602011771号