Django模型類關(guān)系及相關(guān)操作-創(chuàng)新互聯(lián)

1.模型類關(guān)系

成都創(chuàng)新互聯(lián)公司從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元蜀山做網(wǎng)站,已為上家服務(wù),為蜀山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

(1)一對多關(guān)系

如:圖書類-英雄類
models.ForeignKey() #定義在多類

(2)多對多關(guān)系

如:新聞類-新聞類型類
models.ManyToManyField() #定義在哪個(gè)類都可以

Django 模型類關(guān)系及相關(guān)操作

(3)一對一關(guān)系

如:員工-員工詳細(xì)信息
models.OneToOneField() #定義在哪個(gè)類都可以

2.關(guān)聯(lián)查詢 (一對多)

在一對多關(guān)系中,一對應(yīng)的類我們把它叫做一類,多對應(yīng)的那個(gè)類我們把它叫做多類,我們把多類中定義的建立關(guān)聯(lián)的類屬性叫做關(guān)聯(lián)屬性

(1)
b=BookInfo.objects.get(id=1)
b.heroinfo_set.all() #查詢id為1的圖書關(guān)聯(lián)的英雄的信息

通過模型類查詢:

HeroInfo.objects.filter(hbook__id=1)

(2)

h = HeroInfo.objects.get(id=1)
h.hbook #查詢id為1的英雄關(guān)聯(lián)的圖書信息

通過模型類查詢:

BookInfo.objects.filter(heroinfo__id=1)

(3)格式:

Django 模型類關(guān)系及相關(guān)操作

(4)通過模型類實(shí)現(xiàn)關(guān)聯(lián)查詢:

BookInfo.objects.filter(heroinfohcommentcontains='八') #查詢圖書要求關(guān)聯(lián)的英雄描述包含八

BookInfo.objects.filter(heroinfoidgt=3) #查詢圖書要求關(guān)聯(lián)的英雄id大于3

HeroInfo.objects.filter(hbook__btitle='天龍八部') #查詢天龍八部所有英雄信息

(a)通過多類的條件查詢一類的數(shù)據(jù):
一類名.objects.filter(多類名小寫多類屬性名條件名)

(b)通過一類的條件查詢多類的數(shù)據(jù):
多類名.objects.filter(關(guān)聯(lián)屬性一類屬性名條件名)

Django 模型類關(guān)系及相關(guān)操作

3.插入、更新和刪除

(1)調(diào)用一個(gè)模型類對象的save方法實(shí)現(xiàn)對模型類對應(yīng)數(shù)據(jù)表的插入和更新

(2)調(diào)用一個(gè)模型類對象的delete方法實(shí)現(xiàn)對模型類對應(yīng)數(shù)據(jù)表的刪除

4.自關(guān)聯(lián)

Django 模型類關(guān)系及相關(guān)操作

自關(guān)聯(lián)是一種特殊的一對多關(guān)系

案例:顯示廣州和它的上下級行政區(qū)

(1)在models.py建立自關(guān)聯(lián)模型類
Django 模型類關(guān)系及相關(guān)操作

(2)遷移
Django 模型類關(guān)系及相關(guān)操作

(3)查看MySQL且插入數(shù)據(jù),id與aparent_id關(guān)聯(lián)
Django 模型類關(guān)系及相關(guān)操作

(4)在views.py寫areas()函數(shù)
Django 模型類關(guān)系及相關(guān)操作

(5)在urls.py添加url
Django 模型類關(guān)系及相關(guān)操作

(6)寫模板
Django 模型類關(guān)系及相關(guān)操作

5.管理器

BookInfo.objects.all()->objects是Django幫我自動生成的管理器對象,通過這個(gè)管理器可以實(shí)現(xiàn)對數(shù)據(jù)的查詢。

objects是models.Manger類的一個(gè)對象。自定義管理器之后Django不再幫我們生成默認(rèn)的objects管理器。

(1)自定義一個(gè)管理器類,這個(gè)類繼承models.Manger類

super()表示父類,self.model獲取所在的模型類
Django 模型類關(guān)系及相關(guān)操作
Django 模型類關(guān)系及相關(guān)操作

models.Manger自帶方法create,要輸入具體屬性
Django 模型類關(guān)系及相關(guān)操作

(2)再在具體的模型類里定義一個(gè)自定義管理器類的對象

在BookInfo模型類里自定義管理器類的對象
Django 模型類關(guān)系及相關(guān)操作

自定義管理器類的應(yīng)用場景:

(1)改變查詢的結(jié)果集。
比如調(diào)用BookInfo.books.all()返回的是沒有刪除的圖書的數(shù)據(jù)。

(2)添加額外的方法。
管理器類中定義一個(gè)方法幫我們操作模型類對應(yīng)的數(shù)據(jù)庫。
使用self.model()就可以創(chuàng)建一個(gè)跟自定義管理器對應(yīng)的模型類對象。

小結(jié):

Django 模型類關(guān)系及相關(guān)操作

6.元選項(xiàng)

Django默認(rèn)生成的表名:

應(yīng)用名小寫 _ 模型類名小寫

元選項(xiàng):

需要在模型類中定義一個(gè)元類Meta,在里面定義一個(gè)類屬性 db_table就可以指定表名。

在BookInfo模型類定義Meta類指定表名為bookinfo
Django 模型類關(guān)系及相關(guān)操作

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站題目:Django模型類關(guān)系及相關(guān)操作-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://muchs.cn/article38/cdsesp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃品牌網(wǎng)站制作、營銷型網(wǎng)站建設(shè)、網(wǎng)站制作網(wǎng)站營銷、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)