• 关系映射


    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 来表示对应的所有的作者们的查询

  • 相关阅读:
    bzoj2683简单题 cdq分治
    bzoj3963[WF2011]MachineWorks cdq分治+斜率优化dp
    bzoj1767[Ceoi2009]harbingers 斜率优化dp
    bzoj2753[SCOI2012]滑雪与时间胶囊 最小生成树
    bzoj1492[NOI2007]货币兑换Cash cdq分治+斜率优化dp
    刷题总结——pole(uva 1638 dp)
    刷题总结——分配笔名(51nod1526 trie树)
    刷题总结——树有几多愁(51nod1673 虚树+状压dp+贪心)
    刷题总结——book of evil(codefoeces 337D)
    刷题总结——解方程(NOIP2014)
  • 原文地址:https://www.cnblogs.com/zengsf/p/9972521.html
Copyright © 2020-2023  润新知