博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django model 多对多查询
阅读量:6280 次
发布时间:2019-06-22

本文共 1805 字,大约阅读时间需要 6 分钟。

  看一下自己的models文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
class 
HostList(models.Model):
    
ip 
= 
models.IPAddressField(unique
=
True
, verbose_name
=
u
'IP地址'
)
    
hostname 
= 
models.CharField(max_length
=
30
, verbose_name
=
u
'主机名'
)
    
group 
= 
models.ManyToManyField(
'Group'
, null
=
True
, blank
=
True 
,verbose_name
=
u
'组名'
    
application 
= 
models.CharField(max_length
=
20
, verbose_name
=
u
'应用'
)
    
bianhao 
= 
models.CharField(max_length
=
30
, verbose_name
=
u
'编号'
    
idc_name 
= 
models.CharField(max_length
=
40
,null
=
True
,blank
=
True
, verbose_name
=
u
'所属机房'
    
def 
__unicode__(
self
):
        
return 
self
.ip
class 
Group(models.Model):
    
name 
= 
models.CharField(max_length
=
50
,unique
=
True
)
    
def 
__unicode__(
self
):
        
return 
self
.name

这两个表组成多对多关系,自然而然就产生了第三个对应记录ID值的表:

1
2
3
4
5
6
7
8
9
mysql> show tables;
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| Tables_in_cmdb             |
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| app_group                  |
| app_hostlist               |
| app_hostlist_group         |
 
可以看多多出了一个app_hostlist_group的表:
1
2
3
4
5
6
7
8
9
10
mysql> select 
* 
from 
app_hostlist_group;
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
id 
| hostlist_id | group_id |
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
13 
|          
18 
|        
1 
|
|  
8 
|          
17 
|        
2 
|
|  
3 
|          
16 
|        
2 
|
12 
|          
14 
|        
2 
|
11 
|          
19 
|        
1 
|
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+

映射了id的对应关系;关于查询的两种方式:

第一:从前端返回的一个组名,通过这个组查找到HostList表里面的所有IP:

id = request.GET.get('id')

        group_name = Group.objects.get(id=id)
        all_ip = group_name.hostlist_set.all()

        print all_ip

查看后台代码执行效果:(结果主要有HostList的return self.ip决定)

1
2
[
01
/
Sep
/
2015 
07
:
50
:
04
"GET /group/ HTTP/1.1" 
200 
24954
[<HostList: 
192.168
.
63.114
>, <HostList: 
192.168
.
63.63
>]
本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1691303,如需转载请自行联系原作者
你可能感兴趣的文章
数据结构实践——顺序表应用
查看>>
python2.7 之centos7 安装 pip, Scrapy
查看>>
机智云开源框架初始化顺序
查看>>
Spark修炼之道(进阶篇)——Spark入门到精通:第五节 Spark编程模型(二)
查看>>
一线架构师实践指南:云时代下双活零切换的七大关键点
查看>>
ART世界探险(19) - 优化编译器的编译流程
查看>>
玩转Edas应用部署
查看>>
music-音符与常用记号
查看>>
sql操作命令
查看>>
zip 数据压缩
查看>>
Python爬虫学习系列教程
查看>>
【数据库优化专题】MySQL视图优化(二)
查看>>
【转载】每个程序员都应该学习使用Python或Ruby
查看>>
PHP高级编程之守护进程,实现优雅重启
查看>>
PHP字符编码转换类3
查看>>
rsync同步服务配置手记
查看>>
http缓存知识
查看>>
Go 时间交并集小工具
查看>>
iOS 多线程总结
查看>>
webpack是如何实现前端模块化的
查看>>