1.建立好模型類:
from django.db import models # 設計和模型對應的類,(模型類) # Create your models here. # 一類 # 圖書類 class BookInfo(models.Model): """圖書模型類""" # CharField是字符串類型,max_length指定字符串的最大長度 btitle = models.CharField(max_length=20) # 圖書名稱 # DateFields是日期類型 bpub_date = models.DateField() # 一個圖書類對應多個人物類 # 多類 # 人物類 # 人物名hname、性別hgender、年齡hage、備註hcomment # 關係屬性 hbook,建立圖書類和人物類之間的一對多關係 class FigureInfo(models.Model): """人物模型類""" hname = models.CharField(max_length=20) # 人物名稱 # 性別,BooleanField說明是bool類型,default指定默認值,False代表男 hgender = models.BooleanField(default=False) # 備註 hcomment = models.CharField(max_length=128) """ 關係屬性: 通過ForeignKey("模型類名")來指定一對多的關係 定義外鍵和一對一關係的時候需要加on_delete選項,此參數爲了避免兩個表裏的數據不一致問題 關係屬性對應的表的字段名格式: 關係屬性名_id """ hbook = models.ForeignKey("BookInfo",on_delete=models.CASCADE)
Django2.0之後,設置外鍵需要注意:
定義外鍵和一對一關係的時候需要加on_delete選項,此參數爲了避免兩個表裏的數據不一致問題 on_delete=models.CASCADE
生成表
2.項目路徑的終端下使用命令生成遷移文件
python manage.py makemigrations
3. 項目路徑的終端下使用命令生成數據庫的表
python manage.py migrate
4. 可以在migrations的包下查看自己相關的表的屬性,默認是保存到sqlite數據庫中的
關係屬性對應的表的字段名格式: 關係屬性名_id
SQLiteExpertPro查看數據庫:
5. 現在兩個空的表已經生成好,
進入shell中,進行增刪改查,多表關係查詢
1.添加數據到數據庫的表中
通過關聯屬性指定關聯的關係
即看有關聯屬性這個模型類的對象,是屬於被關聯的模型類的哪個對象
例如 , 有關聯屬性的模型類的對象-->是人物孫悟空的 則和他要關聯的就是沒有關聯屬性的模型類對象-->是書籍西遊記
有關聯屬性的模型類的對象-->是人物宋江的 則和他要關聯的就是沒有關聯屬性的模型類對象-->是書籍水滸傳
2. 查看數據庫:
FigureInfo表中的hbook_id 的值就對應它屬於的那個圖書
可以繼續添加數據 , 注意關聯屬性的值
3. shell中進行增刪改查
參考 : https://blog.csdn.net/wei18791957243
查看和圖書關聯的人物的信息
被關聯的模型類對象.有關聯屬性的模型類名_set.all() # 返回有關聯的 模型類的對象的列表
關係操作的關係說明: