【Django】关联查询set.all() 方法的使用

比如说有a b c三张表关系如下 a是b的父表,b是c的父表
a <----- b  <------c
Module  <-----  privilegegroup <----  privilege 

通过父表获取对应的子表的全部

  1. 1.知道具体某个值时
  2. >>> from apps.models import *
  3. >>> b=eproject.objects.get(id=1)
  4. >>> tmp=b.eserver_set.all()
  5. >>> for i in tmp:
  6. ...     print i.host


2.获取多级字表全部
>>> modules = Module.objects.all()
>>> for i in modules:
...     for j in i.privilegegroup_set.all():
...         for k in j.privilege_set.all():
...             print k.privilege_name
... 
用户添加
用户编辑
用户列表
用户状态变更
重置密码
角色添加
角色编辑
角色列表
角色状态变更
模块添加
模块编辑
模块列表
模块状态变更
权限组添加
权限组编辑
权限组列表
权限组状态变更
权限添加
权限编辑
权限列表
权限状态变更
菜单添加
菜单编辑
菜单列表
菜单状态变更
日志列表
日志详情
环境分类
主机列表
添加服务器
机器授权
授权列表
分库分表
慢日志展示

跨关联关系的查询

  1. 原方法:
  2. >>> b=eproject.objects.get(id=2)
  3. >>> for i in b.eserver_set.all():
  4. ... print i.host
  5. ...
  6. 10.4.89.185
  7. 10.32.32.23

跨关联方法:
 >>> for i in eserver.objects.filter(eproject__id='2'):
...    print i.host
... 
10.4.89.185
10.32.32.23


>>> tt=eserver.objects.filter(eproject__id=2)
>>> for i in tt:
...     print i.id,i.eproject.pname
... 
31 ST
32 ST



>>> tt=eserver.objects.all()
>>> for i in tt:
...     print i.id,i.eproject.pname
... 
18 ST1
28 SI
29 SI
30 SI
31 ST
32 ST



  1. from django.db import models

  2. class Blog(models.Model):<
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值