关系映射
Posted zengsf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关系映射相关的知识,希望对你有一定的参考价值。
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 对象的查询。
以上是关于关系映射的主要内容,如果未能解决你的问题,请参考以下文章
mybatis xml数据层框架应用--Mybatis关系映射之一对多关系映射