Django ORM 一对多跨表操作

效果:

 

主要代码:

def business(request):
    v1 = models.Business.objects.all()
    v2 = models.Business.objects.all().values('id','caption')
    v3 = models.Business.objects.all().values_list('id','caption')
    return render(request,'business.html',{'v1':v1,'v2':v2,'v3':v3})

def host(request):
    v1 = models.Host.objects.filter(nid__gt=0)
#     for row in v1:
#         print(row.nid,row.hostname,row.ip,row.port,row.b_id,row.b.caption,row.b.code,row.b.id)

    v2 = models.Host.objects.filter(nid__gt=0).values('nid','hostname','b_id','b__caption') #这行代码中如果想跨表 都是双下划线  __
#     print('v2:',v2)
    for row in v2:
        print(row['nid'],row['hostname'],row['b_id'],row['b__caption'])
        
    v3 = models.Host.objects.filter(nid__gt=0).values_list('nid','hostname','b_id','b__caption') #这行代码中如果想跨表 都是双下划线  __
    
    return render(request,'host.html',{'v1':v1,'v2':v2,'v3':v3})

host.html

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
</head>
<body>
	<h1>主机列表</h1>
	<table border = "1">
		<thead>
			<tr>
				<th>主机名</th>
				<th>IP</th>
				<th>端口</th>
				<th>业务线名称</th>
			</tr>
		</thead>
		<tbody>
			{% for row in v1 %}
				<tr hid = "{{row.nid}}" bid = "{{row.b_id}}">
					<td>{{row.hostname}}</td>
					<td>{{row.ip}}</td>
					<td>{{row.port}}</td>
					<td>{{row.b.caption}}</td>
				</tr>
			{% endfor %}
		</tbody>
	</table>
	
	<h1>业务线列表(元组)</h1>
	<table border = "1">
		<thead>
			<tr>
				<th>主机名</th>
				<th>业务线名称</th>
			</tr>
		</thead>
		<tbody>
			{% for row in v2 %}
				<tr hid = "{{row.nid}}" bid = "{{row.b_id}}">
					<td>{{row.hostname}}</td>
					<td>{{row.b__caption}}</td>
				</tr>
			{% endfor %}
		</tbody>
	</table>
	
	<h1>业务线列表(字典)</h1>
	<table border = "1">
		<thead>
			<tr>
				<th>主机名</th>
				<th>业务线名称</th>
			</tr>
		</thead>
		<tbody>
			{% for row in v3 %}
				<tr hid = "{{row.0}}" bid = "{{row.2}}">
					<td>{{row.1}}</td>
					<td>{{row.3}}</td>
				</tr>
			{% endfor %}
		</tbody>
	</table>
	
</body>
</html>

 

 

 

 

源码 

链接:https://pan.baidu.com/s/1XBbxaaDE8rsOgWvn1qyrtA 
提取码:2xw6 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值