您好,登錄后才能下訂單哦!
1.模型類關系
(1)一對多關系
如:圖書類-英雄類
models.ForeignKey() #定義在多類
(2)多對多關系
如:新聞類-新聞類型類
models.ManyToManyField() #定義在哪個類都可以
(3)一對一關系
如:員工-員工詳細信息
models.OneToOneField() #定義在哪個類都可以
2.關聯查詢 (一對多)
在一對多關系中,一對應的類我們把它叫做一類,多對應的那個類我們把它叫做多類,我們把多類中定義的建立關聯的類屬性叫做關聯屬性
(1)
b=BookInfo.objects.get(id=1)
b.heroinfo_set.all() #查詢id為1的圖書關聯的英雄的信息
通過模型類查詢:
HeroInfo.objects.filter(hbook__id=1)
(2)
h = HeroInfo.objects.get(id=1)
h.hbook #查詢id為1的英雄關聯的圖書信息
通過模型類查詢:
BookInfo.objects.filter(heroinfo__id=1)
(3)格式:
(4)通過模型類實現關聯查詢:
BookInfo.objects.filter(heroinfohcommentcontains='八') #查詢圖書要求關聯的英雄描述包含八
BookInfo.objects.filter(heroinfoidgt=3) #查詢圖書要求關聯的英雄id大于3
HeroInfo.objects.filter(hbook__btitle='天龍八部') #查詢天龍八部所有英雄信息
(a)通過多類的條件查詢一類的數據:
一類名.objects.filter(多類名小寫多類屬性名條件名)
(b)通過一類的條件查詢多類的數據:
多類名.objects.filter(關聯屬性一類屬性名條件名)
3.插入、更新和刪除
(1)調用一個模型類對象的save方法實現對模型類對應數據表的插入和更新
(2)調用一個模型類對象的delete方法實現對模型類對應數據表的刪除
4.自關聯
自關聯是一種特殊的一對多關系
案例:顯示廣州和它的上下級行政區
(1)在models.py建立自關聯模型類
(2)遷移
(3)查看MySQL且插入數據,id與aparent_id關聯
(4)在views.py寫areas()函數
(5)在urls.py添加url
(6)寫模板
5.管理器
BookInfo.objects.all()->objects是Django幫我自動生成的管理器對象,通過這個管理器可以實現對數據的查詢。
objects是models.Manger類的一個對象。自定義管理器之后Django不再幫我們生成默認的objects管理器。
(1)自定義一個管理器類,這個類繼承models.Manger類
super()表示父類,self.model獲取所在的模型類
models.Manger自帶方法create,要輸入具體屬性
(2)再在具體的模型類里定義一個自定義管理器類的對象
在BookInfo模型類里自定義管理器類的對象
自定義管理器類的應用場景:
(1)改變查詢的結果集。
比如調用BookInfo.books.all()返回的是沒有刪除的圖書的數據。
(2)添加額外的方法。
管理器類中定義一個方法幫我們操作模型類對應的數據庫。
使用self.model()就可以創建一個跟自定義管理器對應的模型類對象。
小結:
6.元選項
Django默認生成的表名:
應用名小寫 _ 模型類名小寫
元選項:
需要在模型類中定義一個元類Meta,在里面定義一個類屬性 db_table就可以指定表名。
在BookInfo模型類定義Meta類指定表名為bookinfo
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。