主要方法有:
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() []