django中Model表的反向查询
很多时候需要在多张表之间进行跨表查询,这其中外键是必须存在的,而通过外键所处的表的对象进行跨表查询,
称为正向查询。反之,则是反向查询。
正向查询很简单,这里不谈。
主要谈下反向查询。
class Userinfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
gender = models.CharField(max_length=32) class U2U(models.Model):
b = models.ForeignKey(to='Userinfo',related_name='girls',on_delete=models.CASCADE) #related_name 创建一个别名,使得反向查询时可以通过这个别名获取对象,如果没有设置这个别名,那就要
g = models.ForeignKey(to='Userinfo',related_name='boys',on_delete=models.CASCADE)
上面简单的创建了两个示例表。
通过Userinfo对象获取U2U的对象,便是反向查询。以下是简单的代码。
boy = models.Userinfo.objects.filter(id=3).first() #获取一个id=1的userinfo对象
res =boy.girls.all() #通过别名‘girls’去获取U2U的对象res
如果没有设置related_name 这个别名,那就要:
res = boy.u2u_set.all()#通过小写的表格名__set查询
综上,一般在设置外键字段时设置related_name 属性,方便于反向查询操作。
django中Model表的反向查询的更多相关文章
- Django中的表单
目录 表单 Django中的表单 用表单验证数据 自定义验证 表单 HTML中的表单是用来提交数据给服务器的,不管后台服务器用的是 Django 还是 PHP还是JSP还是其他语言.只要把 inpu ...
- Django中多表的增删改查操作及聚合查询、F、Q查询
一.创建表 创建四个表:书籍,出版社,作者,作者详细信息 四个表之间关系:书籍和作者多对多,作者和作者详细信息一对一,出版社和书籍一对多 创建一对一的关系:OneToOne("要绑定关系的表 ...
- Django中多表查询思路
需求: 1.有一张文章表和一张评论表 2.两张表的关系是一对多 3.规则:若是有新评论,则将对应的文章置顶,若是有新文章则将新文章置顶. 思路: 在文章表中增加一个最后评论时间的字段.然后采用分组排序 ...
- Django中的表关系实现及操作
表关系的实现 预备知识 ORM的正向操作和反向操作: 1.正向操作:一个模型中定义了一个外键,通过该模型对该外键操作的操作叫做正向操作. 2.反向操作:被外键所关联的模型,通过该模型对外键所在模型 ...
- django 中models表的多对一,多对多的理解
django 表的理解 好处:设计的好,会清晰,易于理解和维护,后期开发事半功倍,一目了然. 1. 一对一的表,两表的属性实际上完全可以合并成一个表,共用一个主键即可: 2. 一对多的表,可以设中间关 ...
- Django中ORM表的创建以及基本增删改查
Django作为重量级的Python web框架,在做项目时肯定少不了与数据库打交道,编程人员对数据库的语法简单的还行,但过多的数据库语句不是编程人员的重点对象.因此用ORM来操作数据库相当快捷.今天 ...
- Django中的ORM关系映射查询方面
ORM:Object-Relation Mapping:对象-关系映射 在MVC框架中的Model模块中都包括ORM,对于开发人员主要带来了如下好处: 实现了数据模型与数据库的解耦,通过简单的配置就可 ...
- Django中获取参数(路径,查询,请求头,请求体)
一.通常HTTP协议向服务器传参有几种途径 : 提取URL的特定部分,如/weather/shanghai/2018,可以在服务器端的路由中用正则表达式截取: 查询字符串(query string), ...
- Django中model的class Meta
Class Meta 作用:使用内部类来提供一些metadata,以下列举一些常用的meta:1,abstract:如下段代码所示,将abstract设置为True后,CommonInfo无法作为一个 ...
随机推荐
- centos7开机启动tomcat7
1.进入tomcat/bin vi setenv.sh (原来没有这个文件,需要创建出来) 添加 #add tomcat pid CATALINA_PID="$CATALINA_B ...
- MySQL日期时间字段
mysql支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: DATETIME DATETIME 用于表示 年月日 时分秒,是 DATE和 ...
- caffe使用(2)
总体流程 https://blog.csdn.net/hjimce/article/details/48933813 https://zhuanlan.zhihu.com/p/24087905 1.编 ...
- 贪玩ML系列之CIFAR-10调参
调参方法:网格调参 tf.layers.conv2d()中的padding参数 取值“same”,表示当filter移出边界时,给空位补0继续计算.该方法能够更多的保留图像边缘信息.当图片较小(如CI ...
- Python面向对象高级编程-@property
使用@property 在绑定属性时,如果直接把属性暴露出去,虽然写起来简单,但是没法检查参数,导致可以把成绩随便改: >>> class Student(object): pass ...
- scc
CSS简介 CSS介绍 CSS(cascading style sheet,层叠样式表)是一种制作网页的新技术,现在已经为大多数浏览器所支持,成为网页设计必不可少的工具之一 CSS语法 CSS实例 每 ...
- 第一课 C语言简明教程
1序言: 1与Java.C#等高级语言相比,C语言使用简单但是也非常重要更容易出错,到目前为止基本上操作系统的内核代码超过百分之九十使用C语言完成,因此学好C语言是学好计算机这门课程的基础,特别是进入 ...
- 第一课 GCC入门
1序言 gcc是一个可移植的编译器,支持多种硬件平台:也不仅仅是一个本地编译器也是一个跨平台编译器:支持多张语言编译时按照模块化设计支持多种语言. gcc编译过程:预处理(预处理器):编译(编译器): ...
- 微信小程序组件scroll-view
视图容器scroll-view :官方文档 Demo Code var order = ['red', 'yellow', 'blue', 'green', 'red'] Page({ data: { ...
- 响应式Tab选项卡
在线演示 本地下载