前言數據庫
先拋出一個問題。銀行就至關於一個數據庫,你去銀行取錢存錢辦卡銷卡,是你告訴銀行櫃員方便仍是你本身去操做電腦辦卡取卡方便?(你還不必定會,假設自動存款機還沒發明),object在數據庫中就至關於銀行裏得銀行櫃員。django
步入正題:編程
在django中的view.py中,咱們可能回常常見到 book_set= Book.objects.all(),book_list = Book.objects.get()?api
讓咱們疑惑的問題是,objects是個什麼東西,book_set 和book_list 又是個神馬東西?函數
object是Manager類型的對象,定義在from django.db import models中,是默認生成的,也就是objects = Modes.Manage() 。用途是數據庫和模型對象交互的接口(api)。book_set返回的是個集合,book_list返回的是個列表。book = Book.objects.all(),這個翻譯成銀行得話就是,一個叫BOOK得人來到銀行,經過一個名叫objects得櫃員,查詢BOOK得銀行餘額和銀行卡信息,結果獲得一個queryset對象spa
在book =BOOK.objects.get()或者book = BOOK.objects.all()中.net
一,QuerySet 對象的建立方法翻譯
>> from blog.models import Blog >>> b = Blog(name='Beatles Blog', tagline='All the latest Beatles news.') >>> b.save() 總之,一共有四種方法 # 方法 1 Author.objects.create(name="WeizhongTu", email="tuweizhong@163.com") # 方法 2 twz = Author(name="WeizhongTu", email="tuweizhong@163.com") twz.save() # 方法 3 twz = Author() twz.name="WeizhongTu" twz.email="tuweizhong@163.com" twz.save() # 方法 4,首先嚐試獲取,不存在就建立,能夠防止重複 Author.objects.get_or_create(name="WeizhongTu", email="tuweizhong@163.com") # 返回值(object, True/False)
備註:前三種方法返回的都是對應的 object,最後一種方法返回的是一個元組,(object, True/False),建立時返回 True, 已經存在時返回 Falsecode
對比得知,object這個管理器對象幫了咱們不少忙,咱們不用實例化對象,不用save(),而是交給Author.object去實現。對象
舉個例子吧,若是咱們把數據庫比做銀行,那麼object對象就至關於櫃員,能幫助你處理各類業務。若是沒有得話,去銀行取錢,咱們得本身登記,本身去金庫拿錢,記帳,鎖門.........不太現實吧。同理,你去數據庫取個數據,沒有objects對象,是否是很麻煩?
其實換個角度來說,你去銀行辦理得一些業務,是銀行櫃員幫你在銀行得數據庫裏進行得增刪改查操做,銀行櫃員得名字能夠叫object(默認得名字),固然也能夠叫小李,小王,不過你得自定義罷了。xiaoli = models.Manage()也是能夠得。
你看看,此時此刻,有沒有認識到,一切皆對象,這個面向對象編程得偉大之處。
二,Django中查詢經常使用的API
# 查詢相關API: # <1>filter(**kwargs): 它包含了與所給篩選條件相匹配的對象 # <2>all(): 查詢全部結果 # <3>get(**kwargs): 返回與所給篩選條件相匹配的對象,返回結果有且只有一個,若是符合篩選條件的對象超過一個或者沒有都會拋出錯誤。 #-----------下面的方法都是對查詢的結果再進行處理:好比 objects.filter.values()-------- # <4>values(*field): 返回一個ValueQuerySet——一個特殊的QuerySet,運行後獲得的並非一系列 model的實例化對象,而是一個可迭代的字典序列 # <5>exclude(**kwargs): 它包含了與所給篩選條件不匹配的對象 # <6>order_by(*field): 對查詢結果排序 # <7>reverse(): 對查詢結果反向排序 # <8>distinct(): 從返回結果中剔除重複紀錄 # <9>values_list(*field): 它與values()很是類似,它返回的是一個元組序列,values返回的是一個字典序列 # <10>count(): 返回數據庫中匹配查詢(QuerySet)的對象數量。 # <11>first(): 返回第一條記錄 # <12>last(): 返回最後一條記錄 # <13>exists(): 若是QuerySet包含數據,就返回True,不然返回False。
另外關於ApI,給你們推薦一篇不錯得文章
https://blog.csdn.net/cumtdeyurenjie/article/details/80211896