zoukankan      html  css  js  c++  java
  • 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 属性,方便于反向查询操作。

  • 相关阅读:
    js 带表情的评论输入框问题
    js 元素到指定的相对定位的父元素的距离
    html分享QQ,微信,显示分享图片,标题,简介
    网络空间安全0x01志向
    优秀的前端
    float探究
    转载的。。。
    判断有木有环
    居中(纯css方式)
    一个闭包的很好的考题, 闭包+递归
  • 原文地址:https://www.cnblogs.com/xiaohuyi/p/10304018.html
Copyright © 2011-2022 走看看