關系映射
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 對象的查詢。
關系映射