zoukankan      html  css  js  c++  java
  • 关系映射

    1.一对一映射
      1.语法
        在关联的两个类中的任何一个类都可以增加对另一个类的引用

        属性 = models.OneToOneField(Entry)

        ex:
          class Author(models.Model):
            .... ....

          class Wife(models.Model):
            .... ....
            #增加对Author的一对一引用
            author = models.OneToOneField(Author)
        在数据库中:
          会生成一个外键(author_id)列在 wife 表中,会引用在 author 表的主键
        在 Author 中:
          增加一个隐式属性 - wife,来表示author所对应的wife(其实就是反向引用属性)
      2.查询
        1.正向查询 :通过 Wife 找 Author
          特点:通过自定义的关联属性查找对应实体
          wife = Wife.objects.get(id=1)
          author = wife.author
        2.反向查询 :通过 Author 找 Wife
          特点:通过反向引用属性查找对应的实体
          author = Author.objects.get(id=1)
          wife = author.wife

    2.一对多映射
      1.语法
        在"多"表中增加对"一"表的外键引用,在"多"实体中增加对"一"实体的引用
        在 "多" 实体中增加:
          属性 = models.ForeignKey(Entry)

          ex: Book(多) 和 Publisher(一)
            class Book(models.Model)
              ... ...
              publisher = models.ForeignKey(Publisher)

        数据库中体现:
          Book 表中 增加一个外键列 publisher_id ,引用自 Publisher 表中的主键
        在实体类中的:
          1.Book 中会有一个 publisher 属性 来表示对应的 Publisher 的对象
          2.Publisher 中会有一个隐式属性 - book_set,用来表示该 publisher 对应的所有的 Book 对象的查询。

    3.多对多映射
      1.语法
        在关联的两个类的任意一个类中,增加:
          属性 = models.ManyToManyField(Entry)
      ex: Author 与 Book 可以是多对多关联关系
        1位Author可以出版多本Book
        1本Book可以由多位Author联合编写
        class Author(models.Model)
          .... ....

        class Book(models.Model):
          ... ...
          authors = models.ManyToManyField(Author)
      正向引用:在 Book 中通过 authors 来表示对应的所有的书籍的查询
      反向引用:在 Author 中通过 book_set 来表示对应的所有的作者们的查询

  • 相关阅读:
    基于node.js 的 websocket的移动端H5直播开发
    c# 基于RTMP推流 PC+移动端 拉流播放
    Android Studio解决Error:moudle not specified
    能ping通域名,却不能上网
    转 Postman访问Webapi的Get/Post/Put/Delte请求
    Sqlite 参数化 模糊查询 解决方案
    autofac使用总结
    windows7 安装pytorch
    linux nginx 如何配置多个端口
    委托应用实例演变
  • 原文地址:https://www.cnblogs.com/zengsf/p/9972521.html
Copyright © 2011-2022 走看看