django資料欄位查詢
阿新 • • 發佈:2018-11-15
5.2.4 欄位查詢
相當於sql語句中where子句,它可以為filter、exclude和get方法提供引數。
屬性名稱__比較運算子=值 #是兩個下劃線
操作符 | 說明 | 示例 |
---|---|---|
exact/= | 精確判等 | uname = ‘admin’ uname__exact = 'admin' uname__exact = None #uname is null |
iexact | 不區分大小寫判等 | name__iexact = ‘admin’ |
contains | 模糊查詢,等價like ‘%值%’ | uname__contains = ‘admin’ |
contains | 不區分大小寫的模糊查詢 | uname__icontains = ‘Admin’ |
startswith | 以…開頭 | uname__startswith = ‘a’ |
istartswith | (不區分大小寫)以…開頭 | uname__istartswith = ‘a’ |
endswith | 以…結尾 | uname__endswith = ‘m’ |
iendswith | (不區分大小寫)以…結尾 | uname__iendswith = ‘m’ |
isnull | 判空(等價 = None) | uname__isnull = True #等價 uname is nullunam__isnull = False #等價 uname is not null |
in | 包含 | uid__in = [1,2,3] #in後面必須是可迭代物件 |
range | 範圍測試(相當between and) | uid__range = [2,5] #uid >=2 and cid <=5 |
gt/gte | 大於/大於等於 | uid__gt = 2 |
lt/lte | 小於/小於等於 | uid__lte = 2 |
regex | 正則匹配 | uname__regex= r’^a’ |
iregex | 不區分大小寫的正則匹配 | uname__iregex= r’^a’ |
-
in後面可以跟一個子查詢,但要求子查詢只能返回一個欄位
User.objects.filter(uid__in = (2,3,4)) User.objects.filter(uid__in = [2,3,4]) res = User.objects.filter(uid__gt = 1).values('uid') #查詢集中只有一個欄位uid User.objects.filter(uid__in = res
-
日期查詢
- year、month、day、week_day、hour、minute、second
#等價sql: select * from User where year(regtime) = 2018 User.objects.filter(regtime__year = 2018)