Python中Django的ORM高級(jí)用法
一、模糊查詢
contains
查詢某個(gè)屬性中包含某個(gè)數(shù)據(jù)結(jié)果
def stuinfo(request):
##查詢字段中包含某個(gè)內(nèi)容
data_list = stu.objects.filter(name__contains="華")
for item in data_list:
print(item.name)
return HttpResponse("查詢成功") 
startswith、endswith
def stuinfo(request):
###查詢以什么開(kāi)頭的內(nèi)容
stu_start = stu.objects.filter(name__startswith="張")
for item in stu_start:
print(item.name)
return HttpResponse("查詢成功") 
def stuinfo(request):
###查詢以什么結(jié)尾的結(jié)尾
stu_end = stu.objects.filter(name__endswith="華")
for item in stu_end:
print(item.name)
return HttpResponse("查詢成功" 
注釋?zhuān)阂陨线\(yùn)算符都區(qū)分大小寫(xiě),在這些運(yùn)算符前加上i表示不區(qū)分大小寫(xiě),如iexact、icontains、istartswith、iendswith.
isnull
查看某個(gè)字段為空的記錄
def stuinfo(request):
###比較大小
null_stu = stu.objects.filter(description__isnull=True) ##查詢description為空的數(shù)據(jù)結(jié)果
for item in null_stu:
print(item.age)
return HttpResponse("查詢成功")比較查詢
gt 大于 (greater then) gte 大于等于 (greater then equal) lt 小于 (less then) lte 小于等于 (less then equal)
def stuinfo(request):
###比較大小
age_stu = stu.objects.filter(age__gt=22) ###查詢年齡大于22的結(jié)果
for item in age_stu:
print(item.age)
return HttpResponse("查詢成功") 日期查詢
year、month、day、week_day、hour、minute、second:對(duì)日期時(shí)間類(lèi)型的屬性進(jìn)行運(yùn)算。
from django.utils import timezone as datetime
def stuinfo(request):
###根據(jù)日期進(jìn)行查詢
time_stu = stu.objects.filter(create_time__gt=datetime.datetime(2020,11,20)) ##查看創(chuàng)建時(shí)間在2020年11月20日之后的數(shù)據(jù)
print(time_stu)
return HttpResponse("查詢成功")二、進(jìn)階查詢
F查詢
之前的查詢都是對(duì)象的屬性與常量值比較,兩個(gè)屬性怎么比較呢? 答:使用F對(duì)象,被定義在django.db.models中。
from django.db.models import F
def stuinfo(request):
###F查詢,不同屬性之間進(jìn)行比較
stu.objects.filter(id=1).update(update_time="2022-5-22") ###更新某個(gè)字段的數(shù)據(jù)
f_stu = stu.objects.get(id=1)
print(f_stu.name)
stu_list = stu.objects.exclude(create_time=F("update_time")) ##查看創(chuàng)建時(shí)間和更新時(shí)間不一樣的數(shù)據(jù)
print(stu_list)
return HttpResponse("查詢成功")
Q查詢
多個(gè)過(guò)濾器逐個(gè)調(diào)用表示邏輯與關(guān)系,同sql語(yǔ)句中where部分的and關(guān)鍵字。
如果需要實(shí)現(xiàn)邏輯或or的查詢,需要使用Q()對(duì)象結(jié)合|運(yùn)算符,Q對(duì)象被義在django.db.models中。
from django.db.models import Q
def stuinfo(request):
###Q查詢,不同屬性之間進(jìn)行比較,類(lèi)似sql中邏輯或,與的關(guān)系
##查看年齡小于19或者大于22
q_stu = stu.objects.filter(Q(age__lt=19) | Q(age__gt=22)).all()
for item in q_stu:
print(item.age)
return HttpResponse("查詢成功") 
Q對(duì)象可以使用&、|連接,&表示邏輯與,|表示邏輯或**
from django.db.models import Q
def stuinfo(request):
##查看年齡不等于22的
q_stu = stu.objects.filter(~Q(age=22))
for item in q_stu:
print(item.age)
return HttpResponse("查詢成功") 
聚合查詢
使用aggregate()過(guò)濾器調(diào)用聚合函數(shù)。聚合函數(shù)包括:Avg 平均,Count 數(shù)量,Max 最大,Min 最小,Sum 求和,被定義在django.db.models中。
注意:aggregate的返回值是一個(gè)字典類(lèi)型,格式如下:
{'屬性名__聚合類(lèi)小寫(xiě)':值}from django.db.models import Sum,Count,Avg,Max,Min
def stuinfo(request):
###聚合查詢聚合函數(shù)包括:Avg 平均,Count 數(shù)量,Max 最大,Min 最小,Sum 求和
##查看數(shù)量
stu_count = stu.objects.count() ##使用count時(shí)一般不使用aggregate()過(guò)濾器。
print(stu_count)
#查詢平均年齡
avg_stu = stu.objects.aggregate(Avg('age'))
print(avg_stu)
##最大值
max_stu = stu.objects.aggregate(Max('age'))
print(max_stu)
return HttpResponse("查詢成功")
到此這篇關(guān)于Python中Django的ORM高級(jí)用法的文章就介紹到這了,更多相關(guān)Django的ORM高級(jí)用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)周期性抓取網(wǎng)頁(yè)內(nèi)容的方法
這篇文章主要介紹了Python實(shí)現(xiàn)周期性抓取網(wǎng)頁(yè)內(nèi)容的方法,涉及Python時(shí)間函數(shù)及正則匹配的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
如何解決Python讀取圖片路徑存在轉(zhuǎn)義字符的問(wèn)題
這篇文章主要為大家詳細(xì)介紹了如何解決Python讀取圖片路徑時(shí)存在轉(zhuǎn)義字符的問(wèn)題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2023-07-07
Python圖像處理之輕松實(shí)現(xiàn)在圖片上添加文字
在當(dāng)今的數(shù)字化時(shí)代,我們經(jīng)常需要處理圖像,無(wú)論是為攝影作品添加專(zhuān)屬水印、批量生成會(huì)議證書(shū)、還是制作有趣的社交媒體表情包,在圖片上添加文字都是一項(xiàng)極其常用且實(shí)用的技能,下面我們就來(lái)看看如何使用Python實(shí)現(xiàn)這一功能吧2026-04-04
Python數(shù)據(jù)庫(kù)編程之pymysql詳解
本文主要介紹了Python數(shù)據(jù)庫(kù)編程中pymysql,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
詳解PyQt5中textBrowser顯示print語(yǔ)句輸出的簡(jiǎn)單方法
這篇文章主要介紹了詳解PyQt5中textBrowser顯示print語(yǔ)句輸出的簡(jiǎn)單方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
pycharm終端安裝pytorch失敗的問(wèn)題及解決
這篇文章主要介紹了pycharm終端安裝pytorch失敗的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
python+os根據(jù)文件名自動(dòng)生成文本
這篇文章主要為大家詳細(xì)介紹了python+os根據(jù)文件名自動(dòng)生成文本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
Python結(jié)合AI實(shí)現(xiàn)數(shù)據(jù)可視化全流程
這篇文章主要介紹了Python結(jié)合AI實(shí)現(xiàn)數(shù)據(jù)可視化全流程,Python有pandas、Matplotlib等庫(kù)提供強(qiáng)大的數(shù)據(jù)處理和基礎(chǔ)可視化能力,而AI技術(shù)則賦予其智能分析特性,需要的朋友可以參考下2026-02-02

