一、QuerySet
查詢集,類似一個列表,包含了滿足查詢條件的所有項。QuerySet 可以被構造,過濾,切片,做為參數傳遞,這些行為都不會對數據庫進行操作。只有你查詢的時候才真正的操作數據庫。意味着QuerySet是惰性執行的----即創建查詢集不會帶來任何的數據庫訪問,直到查詢集需要求值的時候,Django才會真正運行這個查詢。
stu_obj = models.Student.objects.filter(id=2) for i in stu_obj: print(i.name)
只有在(print(i.name))時才訪問一次數據庫.。
常用的QuerySetf方法

<1> all(): 查詢所有結果 <2> filter(**kwargs): 它包含了與所給篩選條件相匹配的對象 <3> get(**kwargs): 返回與所給篩選條件相匹配的對象,返回結果有且只有一個,如果符合篩選條件的對象超過一個或者沒有都會拋出錯誤。 <4> exclude(**kwargs): 它包含了與所給篩選條件不匹配的對象 <5> values(*field): 返回一個ValueQuerySet——一個特殊的QuerySet,運行后得到的並不是一系列model的實例化對象,而是一個可迭代的字典序列 <6> values_list(*field): 它與values()非常相似,它返回的是一個元組序列,values返回的是一個字典序列 <7> order_by(*field): 對查詢結果排序 <8> reverse(): 對查詢結果反向排序,請注意reverse()通常只能在具有已定義順序的QuerySet上調用(在model類的Meta中指定ordering或調用order_by()方法)。 <9> distinct(): 從返回結果中剔除重復紀錄(如果你查詢跨越多個表,可能在計算QuerySet時得到重復的結果。此時可以使用distinct(),注意只有在PostgreSQL中支持按字段去重。) <10> count(): 返回數據庫中匹配查詢(QuerySet)的對象數量。 <11> first(): 返回第一條記錄 <12> last(): 返回最后一條記錄 <13> exists(): 如果QuerySet包含數據,就返回True,否則返回False
返回QuerySet方法
不返回QuerySet方法
聚合函數