一、內嵌ORM框架

概念:對象關係映射,即通過創建模型類,對象與數據庫的映射、關聯。

例如:要創建個模型類映射數據庫圖書表

DEM導出三維模型_sqlite


二、模型類生成表

1)生成遷移文件

命令:python manage.py makemigrations

2)執行遷移生成表

命令:python manage.py migrate

生成表後就會默認到應用跟項目目錄同級下生成db.sqlite3文件,這個文件想要打開可以安裝sqliteman

進入虛擬環境,執行命令:sudo apt-get install sqliteman

安裝完,執行sqliteman可以進入工具進行打開該文件

進入項目終端:python manage.py shell

三、操作增刪改查

DEM導出三維模型_#前端_02


1)新增:導入某應用裏的對應函數,定義對象,以實例.屬性進行賦值,注意這裏寫的屬性要與模型類中編輯的保持一致,最後保存新增。

DEM導出三維模型_#python_03


2)查詢:通過函數對象與括號裏帶的條件獲得數據對象,通過對象進行打印,還可以通過BookInfo.objects.all()查詢到所有數據

DEM導出三維模型_DEM導出三維模型_04


3)修改:直接對對象屬性進行賦值,保存到數據庫。

DEM導出三維模型_sqlite_05


4)刪除:通過delete方法對保存在對象裏的數據進行刪除。

四、模型類關係和關係查詢

上面所提到的已經創建了個圖書的模型類,準備創建一個英雄的模型類,圖書與英雄是一對多的關係,一本圖書可以包含很多個英雄,每個英雄對應保存到一本圖書中,所以新建了個英雄的模型類,添加了個外鍵屬性指向圖書類,如下圖:

DEM導出三維模型_DEM導出三維模型_06


拓展知識:

以上是對象一對多時定義的關係屬性,使用函數ForeignKey;

當出現對象多對多時,可以在兩者中任意一個類上面都可以,使用函數ManyToManyField;

當出現對象一對一時,可以在兩者中任意一個類上面都可以,使用函數OneToOneField。建好模型類後記得生成遷移文件,執行遷移生成表,在插入英雄表數據時,將圖書對象賦值給英雄對象的hbook屬性,增刪改查基本與前面提到的相同。

如何通過表關聯查詢數據:

1)如果想要通過英雄查詢相關聯的圖書的標題名字,公式為

英雄對象.外鍵屬性.圖書標題屬性,例如:h.hbook.btitle

2)如果想要通過圖書查詢相關聯的英雄信息,公式為

圖書對象.英雄函數名小寫_set.all(),例如:b.heroinfo_set.all()

兩者關係操作圖如下:

DEM導出三維模型_#前端_07