疯狂的Django 之深度外键跨表查找之疯狂INNER JOIN
2016-10-06 20:22
495 查看
定义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
- Django 注册信息相关 与外键跨表查询
- django中有外键关系两张表的相互查找方法
- django中两张表有外键关系的相互查找方法,自定义json编码方法
- [Django模板系统]用点号进行深度变量的查找
- Blog.objects.filter()反查外键,django数据库models中的跨表查询,相当于sql的join
- Django框架中方法的访问和查找
- 多核查找-顺序查找也疯狂
- 通过Django模型类的主键pk字段进程查找
- Django关于数据库API的Field查找说明
- django中一个应用使用另一个应用的模型类并建立外键
- 二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- Django外键关系描述
- 数据结构 ——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- django 在字符串[str(list)]中精确查找
- 用非递归实现二叉树的前序、中序、后序、层次遍历,用递归实现查找、统计个数、比较、求深度
- django 外键操作
- 5 Django系列之通过list_display展示多对多与外键内容在admin-web界面下
- 如何查找表外键关联表
- 二叉树 遍历|统计叶子节点|求深度|交换左右子树|查找是否存在某个特定叶子节点练习题