Python Django2 model 查詢(xún)介紹(條件、范圍、模糊查詢(xún))
條件查詢(xún)
范圍查詢(xún)
模糊查詢(xún)
條件查詢(xún)
all()
返回全部結(jié)果集
filter(**kwargs)
返回滿(mǎn)足參數(shù)定義的結(jié)果集 例如
Entry.objects.filter(pub_date__year=2006)
exclude(**kwargs)
返回不滿(mǎn)足參數(shù)定義的結(jié)果集 例如
Entry.objects.exclude(pub_date__year=2006)
鏈?zhǔn)讲樵?xún)
Entry.objects.filter(... headline__startswith=’What’... ).exclude(... pub_date__gte=datetime.date.today()... ).filter(... pub_date__gte=datetime.date(2005, 1, 30)... )
也可以這樣
q1 = Entry.objects.filter(headline__startswith='What')q2 = q1.exclude(pub_date__gte=datetime.date.today())q3 = q1.filter(pub_date__gte=datetime.date.today())
或者
q = Entry.objects.filter(headline__startswith='What')q = q.filter(pub_date__lte=datetime.date.today())q = q.exclude(body_text__icontains='food')get()
filter()返回的是一個(gè)結(jié)果集,如果你確定你要返回的是一條結(jié)果,那么就可以使用get() 例如
Entry.objects.get(pk=1)
get()與filter()區(qū)別
get()返回單一的一條記錄,返回類(lèi)型也是一個(gè)對(duì)象,filter()返回的實(shí)際一個(gè)結(jié)果集,返回類(lèi)型為列表。使用get(),如果查詢(xún)結(jié)果為空,將會(huì)引起DoesNotExist exception,而filter()將會(huì)返回[]
范圍查詢(xún)
LimitingEntry.objects.all()[:5]
將會(huì)返回前5條記錄
Entry.objects.all()[5:10]
將會(huì)返回5~10條記錄
order_by
排序
Entry.objects.order_by(’headline’)[0]
將會(huì)按照’headline’進(jìn)行排序,然后返回第一條記錄
語(yǔ)法:字段 + 兩條下劃線 + 內(nèi)置查詢(xún)字段
lt(lte): 小于(小于等于)
Entry.objects.filter(pub_date__lte=’2006-01-01’)
等同于
SELECT * FROM ... WHERE pub_date <= ’2006-01-01’;
gt(gte): 大于(大于等于)
in
Entry.objects.filter(id__in=[1,3])
模糊查詢(xún)
range
常用來(lái)篩選出屬于某個(gè)連續(xù)區(qū)間的對(duì)象
Entry.objects.filter(id__range=[1,3])contains
包含‘xxx’(大小寫(xiě)敏感),常用于找出包含某些關(guān)鍵字的對(duì)象
Entry.objects.filter(type__name__contains=’python’)
等同于
SELECT ... WHERE name LIKE ’%python%’;
類(lèi)似的有icontains (大小寫(xiě)不敏感)。注意contains是大小寫(xiě)敏感的,icontains是大小寫(xiě)不敏感的。
startswith
以‘xxx’開(kāi)頭(大小寫(xiě)敏感)
Entry.objects.filter(name__startswith=’高級(jí)’)
等同于
SELECT ... WHERE name LIKE ’高級(jí)%’;
類(lèi)似的有istartswith (大小寫(xiě)不敏感)
endswith
以‘xxx’結(jié)尾(大小寫(xiě)敏感)
類(lèi)似的有iendswith (大小寫(xiě)不敏感)
isnull
可設(shè)置為T(mén)rue或者False,用來(lái)篩選某字段 為NULL / 不為NULL 的對(duì)象
Entry.objects.filter(description__isnull=True)
等同
SELECT ... WHERE description IS NULL;
補(bǔ)充知識(shí):Django filter **conditions多條件多字段過(guò)濾篩選數(shù)據(jù)
Application context 應(yīng)用場(chǎng)景:
新增的一條數(shù)據(jù)不能與DB庫(kù)里有的數(shù)據(jù)重復(fù)或者需要多條件/多字段篩選數(shù)據(jù)時(shí)需要用到 **conditions
conditions ={ ’server_ip’: ip, 'bk_biz_id': bk_biz_id, ’cron_min’: c['cron_min'], ’cron_hour’: c['cron_hour'], ’cron_day’: c['cron_day'], ’cron_month’: c['cron_month'], ’cron_week’: c['cron_week'], ’cron_task’: c['cron_task'], 'creator': c['user'], 'deleted': 0}query_set = CrontabInfo.objects.filter(**conditions)
以上這篇Python Django2 model 查詢(xún)介紹(條件、范圍、模糊查詢(xún))就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 詳解JSP 內(nèi)置對(duì)象request常見(jiàn)用法2. .Net反向代理組件Yarp用法詳解3. 解決request.getParameter取值后的if判斷為NULL的問(wèn)題4. .NET Framework各版本(.NET2.0 3.0 3.5 4.0)區(qū)別5. Jsp servlet驗(yàn)證碼工具類(lèi)分享6. 刪除docker里建立容器的操作方法7. NetCore 配置Swagger的詳細(xì)代碼8. ASP.NET MVC增加一條記錄同時(shí)添加N條集合屬性所對(duì)應(yīng)的個(gè)體9. ASP.NET MVC實(shí)現(xiàn)本地化和全球化10. ASP.NET MVC實(shí)現(xiàn)下拉框多選
