Django 表關係的建立

Django 表關係的建立

咱們知道,表關係分爲一對多,多對多,一對一

咱們以一個圖書管理系統爲背景,設計了下述四張表,讓咱們來找一找它們之間的關係git

Book與Publish表django

找關係:一對多app

左表(Book)<------------------------------->右表(Publish)

# 步驟一:
#分析一、先站在左表的角度
左表的多條記錄表明多本書籍,右表的一條記錄表明一個出版社,多本書籍對應同一個出版社 ✔️

#分析二、再站在右表的角度去找
右表的多條記錄表明多個出版社,左表的一條記錄表明一本書,多個出版社不能出版同一本書 ✘

# 步驟二:後肯定關係
# 一對多
左表多對一右表,關聯字段應該建立在BOOk表中,而後foreign key 右表

Book與Author表spa

關係:多對多設計

二者之間是多對多的外鍵關係,須要建立一張單獨的新表來專門存放兩者的關係,外鍵字段推薦建在查詢頻率較高的那種表中3d

Author表與AuthorDetail表code

關係:一對一orm

做者與做者詳情是一對一的外鍵關係,外鍵字段推薦建在查詢頻率較高的那種表中blog

class Book(models.Model):
    # 由於id是自動建立,因此能夠不寫
    title =models.CharField(max_length=64)
    #price爲小數字段,總共8位數,小數位佔2位
    price = models.DecimalField(max_digits=8,decimal_places=2)

    # 書籍與出版社  是一對多外鍵關係
    publish = models.ForeignKey(to='Publish')  # 默認關聯字段就是出版社表的主鍵字段
    # publish = models.ForeignKey(to=Publish)
    # to後面也能夠直接寫表的變量名 可是須要保證該變量名在當前位置的上方出現

    # 書籍與做者  是多對多外鍵關係
    authors = models.ManyToManyField(to='Author')
    """
    authors字段是一個虛擬字段 不會真正的在表中建立出來
    只是用來告訴django orm 須要建立書籍和做者的第三張關係表
    """

class Publish(models.Model):
    name = models.CharField(max_length=64)
    addr = models.CharField(max_length=64)

class Author(models.Model):
    name =models.CharField(max_length=32)
    phone = models.BigIntegerField()
    # 一對一外鍵關係創建
    author_detail = models.OneToOneField(to='AuthorDetail')

class AuthorDetail(models.Model):
    age = models.IntegerField()
    addr = models.CharField(max_length=255)

注意:"""
    ForeignKey字段以及OneToOneField字段 在建立表的時候orm都會自動給該字段加_id的後綴
    不管本身有沒有加
   """生命週期

 

多對多關聯關係的三種方式

方式一:全自動建立第三張表

 方式二:純手動建立(瞭解)

 

  方式三:半自動建立(推薦)

django請求生命週期流程圖

相關文章
相關標籤/搜索