zoukankan      html  css  js  c++  java
  • Django中的基于双下划线的连表查询

       前言: 胡斌意淫到了唐朝没实现了一夫一妻制了想法,可是老婆多了,孩子多了就不好查找,这个时候他就跪着找到了华哥哥,请华哥帮忙,华哥打开了电脑在Django中为了实现了多表的跨表查询,为了答谢华哥,他就跪下了,伸出了头,,,,,,,,,,
        本节就是讲到基于双下划线的跨表查询(join),华哥是一个很纯洁的人今天就放过胡斌,就拿图书管理系统说话,后宫管理系统的个表大家需要意淫,就不说了.
    

    基于双下划线的跨表查询(join)

    一对一
    '一对一'
    正向连表,靠属性*************一定记得靠属性 
    查看'胡斌'(老公)的战场在哪里?******也就是这会出现作者表和作者详情表也就是典型的一对一的查询
    ret = models.Husband.objects.filiter(name='胡斌').values(ad__addr)#######ad就是author表中建立的作者表和作者详情表的外键(ad = models.ForeignKey('HusbandDetail',on_delete=models.CASCADE))
    print(ret) --------结果肯定是相机前
    那我们来看看胡斌的老婆是谁
    ret=models.Husband.objects.filiter(name='胡斌').values(ad__wife)#######斌哥虽然女人多,我们都知道你的老婆永远只有一个
    print(ret)
    结果就是
    '东盟'
    
    '反向连表'*********一定一定要记住靠的是类名的小写
    查看'胡斌'(老公)的战场在哪里?
    ret=models.HusbandDetail.objects.filiter(author__name='胡斌').values('addr')
    print(ret)
    结果:
      相机前
    那我们来看看胡斌的老婆是谁?
    ret=models.HusbandDetail.objects.filiter(author__name='胡斌').values('wife')
    print(ret)
    结果
    '善东盟'
    练习:
    查看一下胡斌的爸爸是谁?
    ret=models.Husband.objects.filiter(name='胡斌').valuse(ad__father)
    print(ret)
    结果:
      '熊华'
    反向查询胡斌的爸爸是谁?
    ret=models.HusbandDetail.objects.filiter(author__name='胡斌').values('father')
    结果:
      '熊华'
    
    一对多
    '正向查询
    查询东蒙生的孩子有哪些
    ret=models.Wife.objects.filiter(name='东萌').valuse('childs__name')
    来检验下就来个输出DNA检测结果
    print(ret)
    '结果:
      熊一,熊二,熊三
    '反向来检测一下
     ret=models.Children.filiter(wife__name='东盟).valuse('name')
     '结果':
         熊一,熊二,熊三                       
    '总结:
        '胡斌的老婆比较专一,专一的爱着隔壁老熊                       
    '我们来练习已发(不要只是意淫,来个实战):
    查看东萌的孩子家住哪里
    '正向查询
    ret=models.Wife.objects.filiter(name='东萌').values('childs__addr')
    print(ret)
    结果是:
     熊华家
    '反向查询                           
    ret=models.Children.objects.filiter(wife__name='东蒙').values('addr')                           
           
     结果是:
     熊华家
      总结:好兄弟都是自己人                           
    
    多对多
    查询一下熊二的朋友有哪些
    ret=models.Children.object.filiter(name='熊二').values('friends__name')
    print(ret)
    结果:
    '小东蒙'
    反向查询
    ret=models.Friend.object.filiter(children__name='熊二').values('name')
    print(ret)
    结果:
    '小东蒙'
    
  • 相关阅读:
    Android ANR 知多少
    电源管理
    功耗分析
    手机功耗测试
    Battery Historian
    Android 电量优化
    Android手机功耗
    功耗 Log 抓取要求规范
    Android 手机无法进入系统解决方案
    定屏死机问题操作指南
  • 原文地址:https://www.cnblogs.com/x-h-15029451788/p/11930525.html
Copyright © 2011-2022 走看看