zoukankan      html  css  js  c++  java
  • (19)模型层 -ORM之msql 跨表查询(正向和反向查询)

    基于对象的跨表查询

    基于对象的跨表查询
    '''正向和反向查询'''
    # 正向 ----> 关联字段在当前表中,从当前表向外查叫正向
    # 反向 ---> 关联字段不在当前表中,当当前表向外查叫反向

    '''一对一的查询'''
    # 查询lqz这个人的地址 正向查询按字段
    author = models.Author.objects.filter(name='qlz').first()
    print(author.author_detail.addr)   #这样就获取到了地址

    # 查询lqz这个人的地址 反向查询按表名小写
    author = models.AuthorDetail.objects.filter(addr='武汉').first()
    print(author_detail.author.name)

    '''一对多的查询 正向查询按字段,反向查询按表名小写_set'''
    # 出版社和书是一对多的关系,关联字段在书中
    # 正向查询 查询红楼梦这本书的出版社地址
    book = models.Book.objects.filter(name='红楼梦').first()
    print(book.publish.addr)

    # 反向查询
    publish = models.Publish.objects.filter(name='南京出版社').first()
    books = publish.book_set.all()   #all就是拿出所有的书
    # books 是一个queryset对象
    for book in books:
    print(book.name)   #queryset有多个值要通过for循环取值


    '''多对多的查询 书和作者是多对多,关联字段authors在book里'''
    #正向查询 按字段.all
    # 查询红楼梦这本书的所有作者
    book=models.Book.objects.filter(name='红楼梦').first()
    authors = book.authors.all()
    for author in authors:
    print(author.name)

    # 反向查询按表名小写_set.all()
    # 查询lqz写的所有书
    lqz = models.Author.objects.filter(name='lqz').first()
    books = lqz.book_set.all()
    for book in books:
    print(book)

  • 相关阅读:
    微信小程序
    如何在微信小程序中使用骨架屏
    Nlog打印日志到Influxdb数据库
    C#通过模板导出Word的两种方法(超简单)
    VS2019制作的安装包,默认安装到C盘快捷方式无法打开
    orcale数据库还原备份
    Thread 类创建线程
    Quartz.NET
    DataTable ,使用详细。
    Unity3D 学习
  • 原文地址:https://www.cnblogs.com/shizhengquan/p/10524148.html
Copyright © 2011-2022 走看看