日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

django的模型類管理器——數據庫操作的封裝詳解

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

模型實例方法

str():在將對象轉換成字符串時會被調用。

save():將模型對象保存到數據表中,ORM框架會轉換成對應的insert或update語句。

delete():將模型對象從數據表中刪除,ORM框架會轉換成對應的delete語句。

模型類的屬性

屬性objects:管理器,是Manager類型的對象,用于與數據庫進行交互。

當沒有為模型類定義管理器時,Django會為模型類生成一個名為objects的管理器,自定義管理器后,Django不再生成默認管理器objects。

管理器是Django的模型進行數據庫操作的接口,Django應用的每個模型都擁有至少一個管理器。Django支持自定義管理器類,繼承自models.Manager。

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

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

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

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

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

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

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

2.在管理器類中定義創建對象的方法

當創建模型類對象時,django不會對數據庫進行讀寫操作,調用save()方法才與數據庫交互,進行insert或update操作,將數據保存到數據庫中。如果模型類的屬性比較多,逐個屬性賦值很麻煩,推薦使用管理器

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

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

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

c)調用語法如下:

調用:

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

補充知識:Django中的模型類管理器以及自定義管理器

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

答:objects是Django幫我自動生成的管理器對象,通過這個管理器可以實現對數據的查詢。

objects是models.Manger類的一個對象

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

使用博客之前使用過的模型類,然后在項目的shell中導入模型類,進行查看類型

django的模型類管理器——數據庫操作的封裝詳解

自定義模型管理器類

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

再在具體的模型類里定義一個自定義管理器類的對象。

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

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

然后在項目的shell中,

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

django的模型類管理器——數據庫操作的封裝詳解

自定義管理器類的應用場景

1.改變查詢的結果集。

比如調用BookInfo.books.all()返回的是沒有刪除的圖書的數據。

2.添加額外的方法。

管理器類中定義一個方法幫我們操作模型類對應的數據表。

使用self.model()就可以創建一個跟自定義管理器對應的模型類對象。

1.舉例,模型類對應的表中有這個表

django的模型類管理器——數據庫操作的封裝詳解

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

重寫all()方法,如果有其他的需求的時候可以重新其他對應的方法

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

然后進行驗證,重新打開項目的shell,進行查詢之后就獲取到了4條數據(過濾掉了一條)

django的模型類管理器——數據庫操作的封裝詳解

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

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

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

django的模型類管理器——數據庫操作的封裝詳解

數據中也相應的有了該條數據,因為我們在額外的方法中使用了save()函數保存到數據庫

django的模型類管理器——數據庫操作的封裝詳解

這個額外的方法通常寫在管理器中,當然也可以寫在模型類中,當寫在模型類中,使用的時候則直接模型類調用該方法就行了,并且定義成模型類的類方法。注意區別

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

django的模型類管理器——數據庫操作的封裝詳解

數據庫就已經有了

django的模型類管理器——數據庫操作的封裝詳解

模型管理器類和模型類的關系

django的模型類管理器——數據庫操作的封裝詳解

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

標簽: Django
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
婷婷激情一区| 国产美女视频一区二区| 免费av一区二区三区四区| 美女久久久久| 亚洲欧美在线专区| 国产精品日韩精品中文字幕| 国产美女高潮在线观看| 国内精品99| 奇米亚洲欧美| 日韩久久一区二区三区| 蜜桃伊人久久| 国产精品99久久免费观看| 韩国三级一区| 亚洲欧美专区| 日韩av在线播放网址| 欧美精品九九| 日韩免费精品| 麻豆视频在线看| 免费的成人av| 精品少妇av| 鲁大师影院一区二区三区| 国产精品香蕉| 欧美日韩视频| 免费观看亚洲天堂| 一区免费视频| 精品在线网站观看| 久久不射网站| 中文字幕成在线观看| 免费久久精品视频| 伊人久久国产| 日本精品国产| 少妇久久久久| 国产美女精品视频免费播放软件| 另类中文字幕国产精品| 亚洲精品动态| 青青久久av| 久久国产婷婷国产香蕉| 欧美va天堂| 精品五月天堂| 亚洲精选久久| 国产精品av久久久久久麻豆网| 国产日韩欧美| 国产午夜久久| 日韩网站中文字幕| 国产精品九九| 亚洲资源网站| 欧洲亚洲一区二区三区| 国产欧美日韩精品高清二区综合区 | 日韩成人午夜精品| 久久国产日韩| 麻豆精品国产91久久久久久| 免费观看在线综合色| 欧美不卡高清一区二区三区| 国产精品亚洲人成在99www| 香蕉久久国产| 久久在线视频免费观看| 国产 日韩 欧美 综合 一区| 亚洲区第一页| 亚洲精品1区2区| 成人精品亚洲| 精品一区二区三区中文字幕在线| 蜜臀91精品一区二区三区| 欧美日韩尤物久久| 久久精品五月| 国产精品免费大片| 亚洲91网站| 久久国产高清| 久久国产成人午夜av影院宅| 国产一区精品福利| 久久成人高清| 国产欧美日韩精品一区二区免费 | 日本麻豆一区二区三区视频| 一区视频在线| 欧美一区二区三区激情视频| 成人国产精品一区二区免费麻豆| 国产精品一区二区av交换| 日韩毛片一区| 天堂av一区| 四虎精品一区二区免费| 亚洲精品中文字幕乱码| 久久一级电影| 91精品国产91久久久久久黑人| 国产精品久久久久久模特| 91精品日本| 欧美日韩亚洲一区在线观看| 91国内精品| 奇米色欧美一区二区三区| 日韩一区二区三区免费视频| 免费的成人av| 亚洲精品乱码| 奇米狠狠一区二区三区| 91九色综合| 国产毛片一区二区三区 | 日日夜夜免费精品视频| 免费欧美在线视频| 日韩中文字幕1| 亚洲一区成人| 噜噜噜久久亚洲精品国产品小说| 国产精品老牛| 日韩在线一区二区| 亚洲免费福利一区| 亚洲精品欧美| 欧美一级网站| 国产精品三级| 国产一区二区三区久久| 捆绑调教日本一区二区三区| 欧美黄色网页| 黄色亚洲免费| 亚洲三级精品| 欧美一区二区三区久久精品| 国产精品中文| 日产精品一区二区| 欧美日韩精品一区二区视频| 在线观看免费一区二区| 日韩中文字幕区一区有砖一区 | 亚洲影视一区| 青青草伊人久久| 国产精品一区2区3区| 久久精品毛片| 日本免费一区二区三区四区| 日韩天堂在线| 一区在线观看| 91精品视频一区二区| 欧美激情综合| 婷婷综合六月| 国产日韩综合| 久久精品99久久久| 日韩1区2区| 好吊一区二区三区| 青青草91视频| 色爱综合网欧美| 亚洲作爱视频| 日韩一区二区三区精品 | 亚洲国产日韩欧美在线| 亚洲小说春色综合另类电影| 国产激情精品一区二区三区| 日韩av首页| 亚洲精品精选| 精品国产亚洲一区二区三区在线| 国产一区清纯| 日韩中出av| 日韩av二区| 亚洲尤物在线| 国产精品久久亚洲不卡| 久久婷婷av| 免费的成人av| 国产一区二区三区黄网站| 欧美日韩日本国产亚洲在线| 国产欧美激情| 免费国产自久久久久三四区久久| 日韩国产成人精品| 97精品国产| 免费国产亚洲视频| 精品三级久久久| 伊人久久大香线蕉av超碰演员| 国产亚洲一区二区三区啪| 一区二区三区四区日本视频| 亚洲综合小说| a日韩av网址| 日韩精品电影一区亚洲| 四虎国产精品免费观看| 亚洲欧美日本日韩| 免费观看亚洲天堂| 99视频精品免费观看| 免费一区二区三区在线视频| 欧美日韩国产高清| 精品香蕉视频| 一区二区亚洲视频| 日韩成人三级| 久久精品97| 亚洲欧美日本日韩| 神马午夜在线视频| 久久狠狠久久| 亚洲男女自偷自拍| 福利精品在线| 涩涩涩久久久成人精品| 久久视频国产| 久久免费福利| 日韩区欧美区| 激情综合自拍| 国产一区一一区高清不卡| 亚洲一级大片| 亚洲91视频| 精品一区二区三区中文字幕视频| 亚洲毛片视频| 黄色精品网站| 色婷婷狠狠五月综合天色拍| 欧美激情福利| 亚洲精品进入| 99re国产精品| 国产精品久久久久久久免费观看| 日韩区一区二| 在线亚洲观看| 午夜精品久久久久久久久久蜜桃| 国产欧美另类| 亚洲精品精选| 乱人伦精品视频在线观看| 91精品婷婷色在线观看| 精品国产一区二区三区噜噜噜| 日本中文字幕视频一区|