日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Django 模型成员2.2

發布時間:2023/11/28 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django 模型成员2.2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

類的屬性

  • objects:是Manager類型的對象,用于與數據庫進行交互
  • 當定義模型類時沒有指定管理器,則Django會為模型類提供一個名為objects的管理器
  • 支持明確指定模型類的管理器
class BookInfo(models.Model):...books = models.Manager()
  • 當為模型類指定管理器后,django不再為模型類生成名為objects的默認管理器

管理器Manager

  • 管理器是Django的模型進行數據庫的查詢操作的接口,Django應用的每個模型都擁有至少一個管理器
  • 自定義管理器類主要用于兩種情況
  • 情況一:向管理器類中添加額外的方法:見下面“創建對象”中的方式二
  • 情況二:修改管理器返回的原始查詢集:重寫get_queryset()方法
class BookInfoManager(models.Manager):def get_queryset(self):return super(BookInfoManager, self).get_queryset().filter(isDelete=False)
class BookInfo(models.Model):...books = BookInfoManager()

創建對象

  • 當創建對象時,django不會對數據庫進行讀寫操作
  • 調用save()方法才與數據庫交互,將對象保存到數據庫中
  • 使用關鍵字參數構造模型對象很麻煩,推薦使用下面的兩種之式
  • 說明:?_init?_方法已經在基類models.Model中使用,在自定義模型中無法使用,
  • 方式一:在模型類中增加一個類方法
class BookInfo(models.Model):...@classmethoddef create(cls, title, pub_date):book = cls(btitle=title, bpub_date=pub_date)book.bread=0book.bcommet=0book.isDelete = Falsereturn book
引入時間包:from datetime import *
調用:book=BookInfo.create("hello",datetime(1980,10,11));
保存:book.save()
  • 方式二:在自定義管理器中添加一個方法
  • 在管理器的方法中,可以通過self.model來得到它所屬的模型類
class BookInfoManager(models.Manager):def create_book(self, title, pub_date):book = self.model()book.btitle = titlebook.bpub_date = pub_datebook.bread=0book.bcommet=0book.isDelete = Falsereturn bookclass BookInfo(models.Model):...books = BookInfoManager()
調用:book=BookInfo.books.create_book("abc",datetime(1980,1,1))
保存:book.save()
  • 在方式二中,可以調用self.create()創建并保存對象,不需要再手動save()
class BookInfoManager(models.Manager):def create_book(self, title, pub_date):book = self.create(btitle = title,bpub_date = pub_date,bread=0,bcommet=0,isDelete = False)return bookclass BookInfo(models.Model):...books = BookInfoManager()
調用:book=Book.books.create_book("abc",datetime(1980,1,1))
查看:book.pk

實例的屬性

  • DoesNotExist:在進行單個查詢時,模型的對象不存在時會引發此異常,結合try/except使用

實例的方法

  • str?(self):重寫object方法,此方法在將對象轉換成字符串時會被調用
  • save():將模型對象保存到數據表中
  • delete():將模型對象從數據表中刪除

總結

以上是生活随笔為你收集整理的Django 模型成员2.2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。