一:常見的操做 <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
1. ORM QuerySet
all: 查詢全部結果
filter(**kwargs)代替get查詢:
返回的是一個<QuerySet [Person:<Person Object>]>
作一個過濾,獲得一個結果放到QuerySet中sql
若是沒有查詢到的話,返回一個空的QuerySet,不會報錯數據庫
models.Xxxx.objects.filter(sqlwehere條件)[0]#經過索引取數據對象
2 get查詢:
若是查詢條件不存在 報錯
查詢具體的對象排序
3 exclude():排除
若是id不存在,返回全部結果索引
4 values():
models.Person.objects.values() #默認取出全部
models.Person.objects.values("birthday") #取出全部對象的birthday
models.Person.objects.values("name","birthday") #取出全部對象的birthdayget
返回一個QuerySet,每一項都是一個字典ast
5 values_list():
相似values()
返回的是一個QuerySet對象,把值以元組的形式返回
6 order_by():
按照指定字段排序
默認按照id排序
1. 能夠在class Model中的元信息設置
class Meta:
ordering=("birthday",)
2. 使用order_by
models.Person.objects.all().order_by("name")class