django model 多对多查询

简介:

  看一下自己的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,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
74 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
2月前
|
SQL Go 数据库
【速存】深入理解Django ORM:编写高效的数据库查询
【速存】深入理解Django ORM:编写高效的数据库查询
65 0
|
2月前
|
SQL 前端开发 Python
基于python-django的neo4j人民的名义关系图谱查询系统
基于python-django的neo4j人民的名义关系图谱查询系统
35 0
|
5月前
|
SQL 数据库 Python
Django框架数据库ORM查询操作(6)
【7月更文挑战第6天】```markdown Django ORM常用数据库操作:1) 查询所有数据2) 根据ID查询 3) 精确查询 4) 分页排序
79 1
|
6月前
|
JSON 数据库 数据格式
使用 Django Q 对象构建复杂查询条件
通过本文示例,我们展示了如何使用Django的Q对象来构建复杂的查询条件,以及如何实现分页功能。Q对象的强大之处在于它能够轻松地组合多个查询条件,支持“与”、“或”关系,极大地提高了查询的灵活性和可读性。希望本文对你在实际项目中使用Django ORM构建复杂查询有所帮助。
|
6月前
|
存储 安全 数据库
Django ORM深度游:探索多对一、一对一与多对多数据关系的奥秘与实践
Django ORM深度游:探索多对一、一对一与多对多数据关系的奥秘与实践
|
6月前
|
存储 SQL 数据处理
Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解
Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解
|
7月前
|
数据采集 自然语言处理 Python
在 Django 中设计爬虫系统的数据模型与多对多关系
在构建爬虫系统时,设计合理的数据模型和多对多关系对系统的性能和可维护性至关重要。本文将探讨如何使用 Django 来设计爬虫系统的数据模型。
|
6月前
|
前端开发 数据库 Python
Python Django项目下的分页和筛选查询
在Django中实现分页功能,视图函数通过`Paginator`处理数据,每页显示10条记录。URL配置支持带参数和不带参数的分页请求。前端模板使用for循环展示分页数据,包括商品信息和状态按钮,并利用分页组件导航。筛选查询视图根据GET请求的`state`参数过滤上架或下架产品,同样实现分页功能。前端添加状态选择下拉框,分页链接携带查询参数`state`确保筛选状态在翻页时保持。
|
7月前
|
Python
使用Django时,如何设计模型关系(一对一、一对多、多对多)?
Django支持三种模型关联:ForeignKey(一对多),OneToOneField(一对一)和ManyToManyField(多对多)。ForeignKey示例:`Article`有一个指向`Author`的外键。OneToOneField示例:`UserProfile`与`User`一对一关联。ManyToManyField示例:`Student`和`Course`之间多对多关系。这些关联字段便于反向查询,如`article.author`获取作者,`author.article_set.all()`获取作者所有文章。
79 1