常見的orm操做

一:常見的操做

<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

相關文章
相關標籤/搜索