定义Model:

from django.db import models

class Moreinfo(models.Model):

    weight = models.FloatField()
height = models.FloatField() class Detail(models.Model): sex = models.CharField(max_length=20)
age = models.IntegerField()
moreinfo = models.ForeignKey(Moreinfo) class Usr(models.Model): name = models.CharField(max_length=20)
money = models.FloatField()
detail = models.ForeignKey(Detail) class Product(models.Model): name = models.CharField(max_length=20)
price = models.FloatField() class Record(models.Model): buyer = models.ForeignKey(Usr, related_name='+',)
seller = models.ForeignKey(Usr, related_name='+',)
product = models.ForeignKey(Product)
conut = models.IntegerField()

查询语句:

>>> x=Record.objects.filter(Q(seller__detail__age__gt=20)|Q(buyer__detail__age__gt=20))
>>> print(x.query)
SELECT "tt_record"."id", "tt_record"."buyer_id", "tt_record"."seller_id", "tt_record"."product_id", "tt_record"."conut" FROM "tt_record" INNER JOIN "tt_usr" ON ("tt_record"."seller_id" = "tt_usr"."id") INNER JOIN "tt_detail" ON ("tt_usr"."detail_id" = "tt_detail"."id") INNER JOIN "tt_usr" T4 ON ("tt_record"."buyer_id" = T4."id") INNER JOIN "tt_detail" T5 ON (T4."detail_id" = T5."id") WHERE ("tt_detail"."age" > 20 OR T5."age" > 20)

整理如下:

SELECT "tt_record"."id", "tt_record"."buyer_id", "tt_record"."seller_id", "tt_record"."product_id", "tt_record"."conut"
FROM "tt_record"
INNER JOIN "tt_usr" ON ("tt_record"."seller_id" = "tt_usr"."id")
INNER JOIN "tt_detail" ON ("tt_usr"."detail_id" = "tt_detail"."id")
INNER JOIN "tt_usr" T4 ON ("tt_record"."buyer_id" = T4."id")
INNER JOIN "tt_detail" T5 ON (T4."detail_id" = T5."id")
WHERE ("tt_detail"."age" > 20 OR T5."age" > 20)

疯狂的Django 之深度外键跨表查找之疯狂INNER JOIN的更多相关文章

  1. Django中ORM外键和表的关系(Django编程-4)

    外键 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam.如果使用的是InnoDB引擎,是支持外键约束的.外键的存在使得ORM框架在处理表关系的时候异常的强大.因此这里我们首先来 ...

  2. django模型中有外键关系的表删除相关设置

    0904自我总结 django模型中有外键关系的表删除相关设置 一.一对一 例如有Author.AuthorDetail两表 author = models.OneToOneField(to='Aut ...

  3. 【Hibernate】无外键多表查询

    无外键多表查询时编写hql,直接使用逗号分隔表,where作为联合查询条件进行查询.查询出来的结果可为两种,List<List<Object>>或者List<Map< ...

  4. oracle查询某张表的外键,并用 truncate 命令有外键的表中的数据

    注:本文来源于<oracle查询某张表的外键(最终解决办法)> 一:几个查询表外键的脚本 select b.table_name, b.column_name from user_cons ...

  5. 主外键多表查询demo

    https://www.cnblogs.com/DragonFire/p/6949767.html mySQL练习-主外键多表查询 MySQL练习-主外键多表查询 练习: 1.建立表关系: 请创建如下 ...

  6. 删除带外键的表【foreign key constraint fails】报错

    title: 删除带外键的表[foreign key constraint fails]报错 date: 2018-08-02 21:59:06 tags: 数据库 --- 遥想当时正在学hibern ...

  7. mysql外键与表查询

    目录 自增特性 外键 外键关系 外键创建 外键的约束效果 级联更新级联删除 多对多关系 一对一关系 表查询关键字 select与from where筛选 group by分组 练习 关系练习 查询练习 ...

  8. Django ORM - 001 - 外键表查询主表信息

    开始用Django做web开发,我想大家都会遇到同样的问题,那就是如何高效快速的查询需要的数据,MVC都很简单,但是ORM折腾起来就有些费时间,我准备好好研究下Django ORM,所以会有一个系列的 ...

  9. django模型中, 外键字段使用to_filed属性 指定到所关联主表的某个字段

    在django项目的开发过程中,在设计模型时一开始将主键设置成了一个自定义的字段,但是在创建搜索索引时却发现必须要存在一个id的字段,并且为主键(不知道是否是项目一开始就这样配置的原因), 但此时表结 ...

随机推荐

  1. html5之img标签

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Java集合框架之四大接口、常用实现类

    Java集合框架 <Java集合框架的四大接口> Collection:存储无序的.不唯一的数据:其下有List和Set两大接口. List:存储有序的.不唯一的数据: Set:存储无序的 ...

  3. Python selenium 三种等待方式详解

    1. 强制等待第一种也是最简单粗暴的一种办法就是强制等待sleep(xx),强制让闪电侠等xx时间,不管凹凸曼能不能跟上速度,还是已经提前到了,都必须等xx时间.看代码: # -*- coding: ...

  4. 一起做orb-slam(2)

    1.ushort用法? USHORT is a macro which is not part of the official C++ language (it's probably defined ...

  5. [LeetCode] Construct Binary Tree from String 从字符串创建二叉树

    You need to construct a binary tree from a string consisting of parenthesis and integers. The whole ...

  6. tooltip.css-2.0文档

     tooltip.css 纯CSS鼠标提示工具. v. 2.0.0 更新日期:2018.4.12 预览DEMO.  安装: 只需在页面中引入"tooltip.css"或" ...

  7. javascript的基础(1)

    1.javascript是什么? 它是一门基于客户端的脚本语言,是相对于服务器而言,浏览器就是一个客户端软件,浏览器从服务器上将资源(html,css,js,图片等)请求下来 并且在本地利用浏览器去解 ...

  8. Java操作属性文件与国际化

    在前面讲到的java类集中的Hashtable中,有一个子类Properties,此类定义如下: public class Properties extends Hashtable<Object ...

  9. bzoj2535 [Noi2010]航空管制

    Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上 ...

  10. [NOI2005]寿司晚宴

    题目描述 为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴.小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了n−1种不同的寿司,编号1,2,3,⋯,n-1 ...