Django框架(5.django中模型類建立關係和多表關係查詢)

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 的值就對應它屬於的那個圖書

BookInfo
FigureInfo

 可以繼續添加數據 ,  注意關聯屬性的值

        

3. shell中進行增刪改查

  參考 :   https://blog.csdn.net/wei18791957243

查看和圖書關聯的人物的信息

     被關聯的模型類對象.有關聯屬性的模型類名_set.all()      # 返回有關聯的 模型類的對象的列表

關係操作的關係說明:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章