• 表于表的查询


    一对多的表结构 外键是在多的那张表里面建的。如下图

    #书和出版社是多对一的关系。
    #
    class Book(models.Model):
        title = models.CharField(max_length=32)
        publish_date = models.DateField(auto_now_add=True)
        price = models.DecimalField(max_digits=5, decimal_places=2)
        # 创建外键,关联publish
        publisher = models.ForeignKey(to="Publisher") #出版社
    class Publisher(models.Model):
        name = models.CharField(max_length=32)
        city = models.CharField(max_length=32)

    数据如下

    1 正向查询(有外键的类)

     使用values('你类中外键的那个字段,然后__外键的那个的字段') 就可以查询了。如下图

    ForeignKey操作

    正向查找

    对象查找(跨表)

    如下的方法

    get()

    first()

    last()

    语法:

    对象.关联字段.字段

     

    示例:

    book_obj = models.Book.objects.first()  # 第一本书对象
    print(book_obj.publisher)  # 得到这本书关联的出版社对象
    print(book_obj.publisher.name)  # 得到出版社对象的名称

     

    字段查找(跨表)

    all()

    filter()

    exclude()

    order_by()

    reverse()

    distinct()

    语法:

    关联字段__字段

    示例:

    print(models.Book.objects.values_list("publisher__name"))

    反向操作

    对象查找

    get()

    first()

    last()

    语法:

    obj.表名_set

    示例:

    publisher_obj = models.Publisher.objects.first()  # 找到第一个出版社对象
    books = publisher_obj.book_set.all()  # 找到第一个出版社出版的所有书
    titles = books.values_list("title")  # 找到第一个出版社出版的所有书的书名

    字段查找

    all()

    filter()

    exclude()

    order_by()

    reverse()

    distinct()

    语法:

    表名__字段

    示例:

    titles = models.Publisher.objects.values_list("book__title")
  • 相关阅读:
    ASP.NET 点击前台服务器按钮后, 刷新. 重新执行 按钮事件
    动态绑定数据日历jquery
    前端及移动端学习 笔记 -待更新
    jq 兼容性 ie7,ie8
    jQuery中的$(window).load()与$(document).ready()
    SqlServer中循环和条件语句示例!
    调用一般处理程序 提供接口api
    background-position: -24px 0px
    中奖名单滚动
    在此上下文中不允许使用子查询
  • 原文地址:https://www.cnblogs.com/seanliang/p/9209645.html
Copyright © 2020-2023  润新知