1. 程式人生 > >關系映射

關系映射

... 生成 引用 數據庫 主鍵 obj .... try 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 對象的查詢。

關系映射