zoukankan      html  css  js  c++  java
  • Django ORM 反向查询

    一/一对多反向查询
      - 先定义两个模型,一个是A,一个是B,是一对多的类型。
    class A(models.Model):
      name= models.CharField('名称', max_length=32)
     
    class B(models.Model):
      a= models.ForeignKey(A, verbose_name='A类',related_name = "test")
      name = models.CharField('称呼', max_length=16)
    
    • 如果我们要查询一个A拥有哪些B的话,那我们要怎么做呢
      通过主表来查询子表
       
      A.objects.get(id=A_id).test.all().order_by('-created')

    • django 默认每个主表的对象都有一个是外键的属性,可以通过它来查询到所有属于主表的子表的信息。这个属性的名称默认是以子表的名称小写加上_set()来表示(上面默认以b_set访问),默认返回的是一个querydict对象。
      related_name 可以给这个外键定义好一个别的名称
      通过子表来查询主表

    B.objects.filter(a=A_id).order_by('-created')

    二、多对多反向查询
    • 现有表关系如下
    class Author(models.Model):
    
        name = models.CharField(max_lenget=32)
        r_To_b = models.ManyToManyField('Book')
    
        #r_To_b = models.ManyToManyField('Book', related_name='auth')
    
    
    class Book(models.Model):
        b_name = models.CharField(max_lenget=32)
    
    • 反向查询:
      obj = models.Book.filter(b_name='xxx').first()
      aobj = obj.author_set()
       
      如果你使用了如我上面的related_name='auth' 别名属性,就可以
      aobj = obj.auth.all()
  • 相关阅读:
    Google Chrome 默认非安全端口列表
    js判断类型的方法
    博客园样式排版自定义
    easyloader.js源代码分析
    JQuery操作cookies
    js获取iframe里面的dom
    封装GetQueryString()方法来获取URL的value值
    js 获取系统时间:年月日 星期 时分秒(动态)
    vue 滚动加载数据
    props 父组件给子组件传递参数
  • 原文地址:https://www.cnblogs.com/shiqi17/p/9678434.html
Copyright © 2011-2022 走看看