django 神奇的双下划线,通过外键的三种查询方式
一,用于跨表操作
只要是object后面字符串都是用双下划线__。其它地方用点.
如:的values中的group_code__name.group_code是一个外键
def list(request):
host = models.host.objects.filter(id__gt=3).values('ip','port','group_code_id','group_code__name')
for i in host:
print(i['group_code__name'],i['group_code_id'])
return render(request,'list.html',{'host':host,})
二,3种外键查询
veiws:
def list(request):
v1 = models.host.objects.filter(id__gt=3)
for i in v1:
print(i.ip,i.port,i.group_code_id,i.group_code.name)
v2 = models.host.objects.filter(id__gt=3).values('ip','port','group_code_id','group_code__name')
for i in v2:
print(i['ip'],i['port'],i['group_code__name'],i['group_code_id'])
v3 = models.host.objects.filter(id__gt=3).values_list('ip','port','group_code_id','group_code__name')
for i in v3:
print(i[0],i[1],i[2],i[3])
return render(request,'list.html',{'v1':v1,'v2':v2,'v3':v3}) html:
<h1>对象获取:</h1>
<table border="1">
<thead><td>ip</td><td>port</td><td>group_id</td><td>group_name</td></thead>
{% for i in v1 %}
<tr><td>{{ i.ip}}</td><td>{{ i.port}}</td><td>{{ i.group_code_id}}</td><td>{{ i.group_code.name}}</td></tr>
{% endfor %}
</table>
<h1>字典获取:</h1>
<table border="1">
<thead><td>ip</td><td>port</td><td>group_id</td><td>group_name</td></thead>
{% for i in v2 %}
<tr><td>{{ i.ip}}</td><td>{{ i.port}}</td><td>{{ i.group_code_id}}</td><td>{{ i.group_code__name}}</td></tr>
{% endfor %}
</table>
<h1>元组获取:</h1>
<table border="1">
<thead><td>ip</td><td>port</td><td>group_id</td><td>group_name</td></thead>
{% for i in v3 %}
<tr><td>{{ i.0}}</td><td>{{ i.1}}</td><td>{{ i.2}}</td><td>{{ i.3}}</td></tr>
{% endfor %}
</table>
。。
django 神奇的双下划线,通过外键的三种查询方式的更多相关文章
- 使用admin的步骤、必知必会13条、单表的双下划线、外键的操作、多对多的操作:
MVC M: model 模型 与数据库交互 V: view 视图 HTML C:controller 控制器 流程 和 业务逻辑 MTV M:model ORM T:template 模板 HTML ...
- Django学习——Django测试环境搭建、单表查询关键字、神奇的双下划线查询(范围查询)、图书管理系统表设计、外键字段操作、跨表查询理论、基于对象的跨表查询、基于双下划线的跨表查询
Django测试环境搭建 ps: 1.pycharm连接数据库都需要提前下载对应的驱动 2.自带的sqlite3对日期格式数据不敏感 如果后续业务需要使用日期辅助筛选数据那么不推荐使用sqlite3 ...
- 模型层字段-多表查询-神奇的双下划线查询-F,Q查询
Django ORM中常用的字段和参数 常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. In ...
- Python--day69--单表查询之神奇的双下划线
单表查询之神奇的双下划线: 单表查询之神奇的双下划线 models.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值 models. ...
- day42——外键的限制和解决方法、外键的三种约束模式、修改表(单表查询)
day42 外键的限制和解决方法 可以添加外键关联的那个字段可以是 被唯一(unique)约束的字段 或者 主键 限制:+ 由于外键的使用,致使多个表之间产生了联系,当我们对这些表进行更新或删除操作的 ...
- django orm 基于双下划线的跨表查询
一..基于双下划线的跨表查询(join实现) key:正向查询按字段,反向查询按表明小写 1.一对多跨表查询 查询在跨表中可以有两种方式,正向查询就是关键字段在你要搜索的表,没有关键字段就是反向查询 ...
- python笔记-20 django进阶 (model与form、modelform对比,三种ajax方式的对比,随机验证码,kindeditor)
一.model深入 1.model的功能 1.1 创建数据库表 1.2 操作数据库表 1.3 数据库的增删改查操作 2.创建数据库表的单表操作 2.1 定义表对象 class xxx(models.M ...
- 完整性约束&外键变种三种关系&数据的增删改
完整性约束 本节重点: not null 与 default unique primary auto_increment foreign key 一.介绍 约束条件与数据类型的宽度一样,都是可选参数 ...
- Django之单表查询——神奇的双下划线
1.filter中的单表查询 # 查询id>1且id<4的结果 ret = models.Person.objects.filter(id__gt=1,id__lt=4) print(re ...
随机推荐
- spring aop 中的JoinPoint
AspectJ使用org.aspectj.lang.JoinPoint接口表示目标类连接点对象,如果是环绕增强时,使用org.aspectj.lang.ProceedingJoinPoint表示连接点 ...
- Scale Free Network | 无标度网络
在看WGCNA的时候看到的一个术语. 先来看一个随机网络:没有中心节点,大部分节点都均匀的连在一起. 再看一下scale free network:大部分的连接都集中在少数的中心 如何检验一个网络是否 ...
- 【分布式搜索引擎】Elasticsearch写入和读取数据过程
一.Elasticsearch写人数据的过程 1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)2)coordinating node,对docum ...
- Crisp String CodeForces - 1117F (状压)
#include <iostream> #include <algorithm> #include <cstdio> #include <math.h> ...
- JavaScript基础四
1.13 Js中的面向对象 1.13.1 创建对象的几种常用方式 1.使用Object或对象字面量创建对象 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对象 1.使用Object或 ...
- leetcode-algorithms 目录
leetcode算法目录 题号 链接 难度等级 36 leetcode-algorithms-36 Valid Sudoku medium 35 leetcode-algorithms-35 Sear ...
- OAF 抛出html消息
throw new oracle.apps.fnd.framework.OAException("<html><p style=\"color:#FF0000; ...
- 洛谷P3225 HNOI2012 矿场搭建
题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之 ...
- JDBC数据库连接工具
什么是JDBC? JDBC是一种可以执行sql语句的Java API,提供对数据库的访问方法. 什么是JDBC驱动? JDBC连接数据库需要驱动,驱动是两个设备要进行通信,满足一定的数据驱动格式.一般 ...
- API的控制器
// GET: api/showApi /// <summary> /// 显示 查询 /// </summary> /// <param name="name ...