码迷,mamicode.com
首页 > 其他好文 > 详细

关系映射

时间:2018-11-17 01:10:45      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:efi   实体类   对象   foreign   too   自定义   隐式   一个   object   

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 对象的查询。

关系映射

标签:efi   实体类   对象   foreign   too   自定义   隐式   一个   object   

原文地址:https://www.cnblogs.com/zengsf/p/9972521.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!