【django系列學習筆記】Django 模型(M)- (2)模型的操做

 

模型的操做(QuerySets

一、模型操做基礎

主要方法有:
    all(): 返回一個包含模式裏全部數據記錄的結果集queryset
    filter():返回一個包含符合指定條件的模型記錄的queryset
    exclude():和filter相反 查找不符合條件的那些記錄
    get():獲取單個複覈條件的記錄(沒有找到或有超過一個結果都會拋出異常)
    order_by(): 排序
python

queryset的查詢及符號:
    queryset.distinct
    queryset.values()
    quetyset.values_list()
    queryset.select_related()
    queryset.filter(title__gt='123')
    querySet.distinct()  去重複
    __exact        精確等於 like 'aaa'
     __iexact    精確等於 忽略大小寫 ilike 'aaa'
     __contains    包含 like '%aaa%'
     __icontains    包含 忽略大小寫 ilike '%aaa%',可是對於sqlite來講,contains的做用效果等同於icontains。
    __gt    大於
    __gte    大於等於
    __lt    小於
    __lte    小於等於
    __in     存在於一個list範圍內
    __startswith   以...開頭
    __istartswith   以...開頭 忽略大小寫
    __endswith     以...結尾
    __iendswith    以...結尾,忽略大小寫
    __range    在...範圍內
    __year       日期字段的年份
    __month    日期字段的月份
    __day        日期字段的日
    __isnull=True/False
實例:
web

    >>> Publisher.objects.filter(country="U.S.A.", state_province="CA")
    [<Publisher: Apress>]
    逗號表示,and
    >>> Publisher.objects.filter(name__contains="press")
    [<Publisher: Apress>]

 二、模型的操做

2.1 對象建立:sql

>>> p = Publisher(name='Apress',
...         address='2855 Telegraph Ave.',
...         city='Berkeley',
...         state_province='CA',
...         country='U.S.A.',
...         website='http://www.apress.com/')
>>> p.save()

2.2 對象更新:
方法1:
spa

>>> Publisher.objects.filter(id=52).update(name='Apress Publishing')

update()方法會返回一個整型數值,表示受影響的記錄條數。
方法2:
code

>>> pub= Publisher.objects.filter(id=52).first()
>>> pub.name = 'Apress Publishing'
>>> pub.save()

注:1方法更優,2方法會更新publisher 的全部字段,因此效率低。sqlite

2.3 刪除對象:
單條,
對象

>>> p = Publisher.objects.get(name="O'Reilly")
>>> p.delete()
>>> Publisher.objects.all()
[<Publisher: Apress Publishing>]

多條,排序

>>> Publisher.objects.filter(country='USA').delete()
>>> Publisher.objects.all().delete()
>>> Publisher.objects.all()
[]
相關文章
相關標籤/搜索