成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

瀏覽:2日期:2024-10-13 18:06:47

模型實(shí)例方法

str():在將對(duì)象轉(zhuǎn)換成字符串時(shí)會(huì)被調(diào)用。

save():將模型對(duì)象保存到數(shù)據(jù)表中,ORM框架會(huì)轉(zhuǎn)換成對(duì)應(yīng)的insert或update語句。

delete():將模型對(duì)象從數(shù)據(jù)表中刪除,ORM框架會(huì)轉(zhuǎn)換成對(duì)應(yīng)的delete語句。

模型類的屬性

屬性objects:管理器,是Manager類型的對(duì)象,用于與數(shù)據(jù)庫進(jìn)行交互。

當(dāng)沒有為模型類定義管理器時(shí),Django會(huì)為模型類生成一個(gè)名為objects的管理器,自定義管理器后,Django不再生成默認(rèn)管理器objects。

管理器是Django的模型進(jìn)行數(shù)據(jù)庫操作的接口,Django應(yīng)用的每個(gè)模型都擁有至少一個(gè)管理器。Django支持自定義管理器類,繼承自models.Manager。

自定義管理器類主要用于兩種情況:

1.修改原始查詢集,重寫all()方法

2.向管理器類中添加額外的方法,如向數(shù)據(jù)庫中插入數(shù)據(jù)。

1.修改原始查詢集,重寫all()方法。

#圖書管理器class BookInfoManager(models.Manager): def all(self): #默認(rèn)查詢未刪除的圖書信息 #調(diào)用父類的成員語法為:super().方法名 return super().all().filter(isDelete=False)

b)在模型類BookInfo中定義管理器

class BookInfo(models.Model): ... books = BookInfoManager()

2.在管理器類中定義創(chuàng)建對(duì)象的方法

當(dāng)創(chuàng)建模型類對(duì)象時(shí),django不會(huì)對(duì)數(shù)據(jù)庫進(jìn)行讀寫操作,調(diào)用save()方法才與數(shù)據(jù)庫交互,進(jìn)行insert或update操作,將數(shù)據(jù)保存到數(shù)據(jù)庫中。如果模型類的屬性比較多,逐個(gè)屬性賦值很麻煩,推薦使用管理器

class BookInfoManager(models.Manager): ... #創(chuàng)建模型類,接收參數(shù)為屬性賦值 def create_book(self, title, pub_date): #創(chuàng)建模型類對(duì)象self.model可以獲得模型類 book = self.model() book.btitle = title book.bpub_date = pub_date book.bread=0 book.bcommet=0 book.isDelete = False # 將數(shù)據(jù)插入進(jìn)數(shù)據(jù)表 book.save() return book

b)為模型類BookInfo定義管理器books語法如下

class BookInfo(models.Model): ... books = BookInfoManager()

c)調(diào)用語法如下:

調(diào)用:

book=BookInfo.books.create_book('abc',date(1980,1,1))

補(bǔ)充知識(shí):Django中的模型類管理器以及自定義管理器

模型類.objects.all()->objects是一個(gè)什么東西呢?

答:objects是Django幫我自動(dòng)生成的管理器對(duì)象,通過這個(gè)管理器可以實(shí)現(xiàn)對(duì)數(shù)據(jù)的查詢。

objects是models.Manger類的一個(gè)對(duì)象

自定義管理器之后Django不再幫我們生成默認(rèn)的objects管理器。

使用博客之前使用過的模型類,然后在項(xiàng)目的shell中導(dǎo)入模型類,進(jìn)行查看類型

django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

自定義模型管理器類

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

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

定義一個(gè)模型管理器類,然后在模型類中使用

class BookInfoManager(models.Manager): '''圖書模型管理器類''' pass class BookInfo(models.Model): '''圖書模型類''' # 圖書名稱 btitle = models.CharField(max_length=20) # 出版日期 bpub_date = models.DateField() # 閱讀量 bread = models.IntegerField(default=0) # 評(píng)論量 bcomment = models.IntegerField(default=0) # 刪除標(biāo)記 isDelete = models.BooleanField(default=False) ’’’自定義管理器’’’ book = BookInfoManager()

然后在項(xiàng)目的shell中,

我們一旦自定義了管理器,就要使用定義的管理器查詢,可以看到我們自定義的Manager

django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

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

1.改變查詢的結(jié)果集。

比如調(diào)用BookInfo.books.all()返回的是沒有刪除的圖書的數(shù)據(jù)。

2.添加額外的方法。

管理器類中定義一個(gè)方法幫我們操作模型類對(duì)應(yīng)的數(shù)據(jù)表。

使用self.model()就可以創(chuàng)建一個(gè)跟自定義管理器對(duì)應(yīng)的模型類對(duì)象。

1.舉例,模型類對(duì)應(yīng)的表中有這個(gè)表

django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

現(xiàn)在通過BookInfo.book.all()自定義管理器只取到isDelete為0的數(shù)據(jù)

重寫all()方法,如果有其他的需求的時(shí)候可以重新其他對(duì)應(yīng)的方法

class BookInfoManager(models.Manager): '''圖書模型管理器類''' # 改變查詢的結(jié)果集 def all(self): # 1.調(diào)用父類的all,獲取所有數(shù)據(jù) books = super().all() # QuerySet # 2.對(duì)數(shù)據(jù)進(jìn)行過濾 books = books.filter(isDelete=False) # 3.返回books return books

然后進(jìn)行驗(yàn)證,重新打開項(xiàng)目的shell,進(jìn)行查詢之后就獲取到了4條數(shù)據(jù)(過濾掉了一條)

django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

2.為模型類添加額外的方法,使其通過模型類.方法名就可以插入保存數(shù)據(jù)

class BookInfoManager(models.Manager): '''圖書模型管理器類''' # 改變查詢的結(jié)果集 def all(self): # 1.調(diào)用父類的all,獲取所有數(shù)據(jù) books = super().all() # QuerySet # 2.對(duì)數(shù)據(jù)進(jìn)行過濾 books = books.filter(isDelete=False) # 3.返回books return books # 封裝函數(shù):操作模型類對(duì)應(yīng)的數(shù)據(jù)表 ’’’添加額外的方法’’’ def create_book(self, btitle, bpub_date): # 1.創(chuàng)建一個(gè)圖書對(duì)象 model_class = self.model book = model_class() book.btitle = btitle book.bpub_date = bpub_date # 2. 保存進(jìn)數(shù)據(jù)庫 book.save() # 3. 返回obj return book

然后重新進(jìn)入到項(xiàng)目的shell中進(jìn)行插入,注意:日期要符合日期字符串的格式,或者使用date()函數(shù)

django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

數(shù)據(jù)中也相應(yīng)的有了該條數(shù)據(jù),因?yàn)槲覀冊(cè)陬~外的方法中使用了save()函數(shù)保存到數(shù)據(jù)庫

django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

這個(gè)額外的方法通常寫在管理器中,當(dāng)然也可以寫在模型類中,當(dāng)寫在模型類中,使用的時(shí)候則直接模型類調(diào)用該方法就行了,并且定義成模型類的類方法。注意區(qū)別

把方法定義在管理器的時(shí)候,管理器中有個(gè)自帶的方法create(),使用這個(gè)時(shí)候必須帶參數(shù)

django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

數(shù)據(jù)庫就已經(jīng)有了

django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

模型管理器類和模型類的關(guān)系

django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

以上這篇django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Django
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
三级欧美在线一区| gogogo免费视频观看亚洲一| 国产精品香蕉一区二区三区| 久久久久久久久久久久久久一区 | 国产乱码精品1区2区3区| 欧美综合二区| 亚洲综合色噜噜狠狠| 亚洲三级免费| 中文字幕一区二区三区在线播放| 99国产精品视频免费观看| 日韩视频不卡中文| 国产高清精品在线| 91精品国产手机| 国产电影一区在线| 日韩免费观看高清完整版在线观看| 日韩高清欧美激情| 久久激情综合| 天堂va蜜桃一区二区三区漫画版| 国产精品乱码一区二区三区| 一区二区欧美视频| 麻豆精品传媒视频| 五月婷婷欧美视频| 久久久国产亚洲精品| 亚洲一区二区免费视频| 国产日韩专区| 亚洲综合一区二区| 亚洲男女自偷自拍| 亚洲成人在线观看视频| 久久人人精品| 秋霞成人午夜伦在线观看| 久久国产手机看片| 日韩精品亚洲一区| 91国偷自产一区二区使用方法| 免费看欧美女人艹b| 欧美性感一区二区三区| 寂寞少妇一区二区三区| 制服丝袜亚洲精品中文字幕| 粉嫩绯色av一区二区在线观看| 日韩一区二区在线观看视频| 成人自拍视频在线| 久久久久久久久久久电影| 欧美精品大片| 亚洲色大成网站www久久九九| 亚洲另类黄色| 亚洲一区二区三区影院| 一区二区三区|亚洲午夜| 亚洲第一综合色| 日本精品一级二级| 久久国产精品72免费观看| 欧美一二三区精品| 亚洲欧美影院| 亚洲免费在线观看视频| 久久大逼视频| 国产在线一区二区| 精品国产乱码久久久久久影片| 欧美不卡在线| 亚洲国产人成综合网站| 精品视频999| 91麻豆123| 一区二区欧美国产| 欧美性猛交xxxx乱大交退制版| 国产91在线看| 国产精品三级视频| 亚洲欧美日韩精品在线| 青青国产91久久久久久| 欧美一区二区日韩| 欧美日韩亚洲一区| 午夜精品一区在线观看| 欧美日韩和欧美的一区二区| 成人动漫精品一区二区| 国产精品人妖ts系列视频| 国产女主播一区二区三区| 久久99精品一区二区三区三区| 日韩午夜av电影| 欧美日本国产精品| 亚洲一区在线电影| 8v天堂国产在线一区二区| 99久久精品国产网站| 亚洲乱码中文字幕| 欧美精品黑人性xxxx| 欧美韩国一区| 日日摸夜夜添夜夜添国产精品 | 国产人成精品一区二区三| 麻豆freexxxx性91精品| 26uuu另类欧美| 亚洲在线国产日韩欧美| 国产在线播放一区二区三区| 国产午夜亚洲精品理论片色戒| 国产欧美短视频| 国产suv一区二区三区88区| 1024成人网色www| 欧美日韩亚洲综合在线| 欧美精品一区二区视频| 日韩精品成人一区二区在线| 欧美成人伊人久久综合网| 亚洲高清123| 国产一区二区视频在线播放| 国产精品家庭影院| 欧美日韩一区成人| 欧美日韩精品免费观看视一区二区 | 欧美成人69av| 日本不卡免费在线视频| 国产婷婷色一区二区三区| 欧美中文字幕一区二区三区| 国内久久精品| 国产传媒久久文化传媒| 夜夜夜精品看看| 26uuu亚洲综合色| 奶水喷射视频一区| 女女同性精品视频| 久久国产精品露脸对白| 一区二区三区在线免费视频 | 日本道精品一区二区三区| 欧美.www| 狠狠色狠狠色综合| 亚洲五月六月丁香激情| 26uuu欧美日本| 欧美日韩午夜影院| 国产欧美一区二区色老头| 91在线观看成人| 精品系列免费在线观看| 一区二区三区在线高清| 久久色成人在线| 3atv在线一区二区三区| 亚洲影视在线| 欧美久久成人| 成人免费福利片| 麻豆91精品视频| 亚洲国产精品久久久久秋霞影院 | voyeur盗摄精品| 麻豆国产精品视频| 亚洲国产日韩a在线播放| 国产免费成人在线视频| 欧美一区二区三区在线观看视频 | 国产欧美一区二区三区鸳鸯浴| 91精品国产手机| 欧美在线你懂的| 久热这里只精品99re8久| 日韩亚洲欧美精品| 在线日韩av| 韩国久久久久| 午夜日韩福利| 91亚洲大成网污www| 粉嫩欧美一区二区三区高清影视| 久久丁香综合五月国产三级网站| 香港成人在线视频| 一区二区三区.www| 亚洲视频一区在线观看| 国产精品乱码一区二区三区软件| 欧美成人精品3d动漫h| 欧美精品日韩一区| 在线欧美一区二区| 一本大道久久a久久综合婷婷 | 久久先锋影音av鲁色资源| 欧美一区二区三区系列电影| 欧美亚洲综合久久| 色吧成人激情小说| 欧洲一区在线观看| 在线视频国产一区| 欧美无乱码久久久免费午夜一区| 久久青青草综合| 色噜噜夜夜夜综合网| 鲁大师影院一区二区三区| 国产欧美午夜| 国产精品久久久一区二区| 亚洲免费播放| 影音先锋中文字幕一区| 国产自产在线视频一区| 欧美日韩1区2区3区| 欧美日韩三级| 狠狠久久婷婷| 国产在线精品二区| 国自产拍偷拍福利精品免费一 | 麻豆91精品视频| 久久精品国产澳门| 极品裸体白嫩激情啪啪国产精品| 欧美jjzz| 欧美日韩精品不卡| 精品999成人| 红桃视频国产精品| 亚洲激情精品| 亚洲影音先锋| 色婷婷久久久久swag精品| 91国在线观看| 欧美三级中文字幕| 91精品国产综合久久久久久久| 91精品国产91久久综合桃花| 日韩欧美国产不卡| 久久品道一品道久久精品| 国产视频一区在线观看| 亚洲国产精品精华液ab| 亚洲私人黄色宅男| 亚洲一区二区不卡免费| 三级精品在线观看| 韩国一区二区视频| 国产精品伊人色| 91在线免费看| 国一区二区在线观看| 99精品欧美一区二区三区| 亚洲综合欧美|