Django 模型成员2.2
生活随笔
收集整理的這篇文章主要介紹了
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django 定义模型2.1
- 下一篇: 用gogs搭建属于自己的git网站