Djang orm花式查詢資料

2021-09-26 00:22:14 字數 2633 閱讀 3396

__exact=『aaa』 精確等於 'like 『aaa』

__iexact=『aaa』 精確等於 忽略大小寫的like 『aaa』

__contains=『aaa』 查詢內容包含 like 『%aaa%』

__gt 大於

__gte 大於等於

__lt 小於

__lte 小於等於

__in 存在於乙個list範圍之內

__startswith 以…開頭 like 『%aaa』

__istartswith 以…開頭 忽略大小寫 like 『%aaa』

__endswith 以…結束 like 『aaa%』

__iendswith 以…結束 忽略大小寫 like 『aaa%』

__range(start,end) 在…範圍內

__year 日期欄位的年份

__month 日期欄位的月份

__day 日期欄位的日

__isnull=true/false 是否為空

filter(**kwargs)返回乙個與引數匹配的queryset,相當於等於(=)

exclude(**kwargs)返回乙個與引數不匹配的queryset,相當於不等於(!=)

model.objects.filter(create_time__year=2019)等同於sql語句select * from model where create_time_year='2019'

model.objects.filter(

name__startswith='張'

).exclude(

id__gte=188

).filter(

create_time__gte=datetime(2018,10,10)

)

等同於

select * from model where name like '張%' and id>=188 and create_time>'2018-10-10'
queryset1 = model.objects.filter(name__startswith='張')

queryset2 = queryset1.exclude(id__gte=188)

queryset3 = queryset1.filter(create_time__gte=datetime(2018,10,10))

這種方法的好處是可以對所有查詢屬性可以重用。

而且queryset是延遲屬性,只有當使用到資料庫時,才會去訪問資料庫

query_set = model.objects.all()  

[e.id for e in query_set]

from django.db.model import q

from datetime import datetime

obj = model.objects.filter(q(question__startswith='who')|q(question__startswith='what'))

等同於:select * from model where question like 'who%' or question like 'what%'

query_set = model.objects.filter(

q(create_time__gte=datetime(2018,10,10)) | q(

create_time__lte=datetime(2019,10,10)),

name__startswith='張'

)

等同於:select * from model where name like '張%' and create_time >= '2018-10-10' and create_time <= '2019-10-10';

亦可寫為:

query_set = model.objects.filter(

name__startswith='張',

q(create_time__range(

datetime(2018,10,10),datetime(2019,10,10)

)))

f物件可以使用模型的a屬性與b屬性進行比較

from django.db.model import f

obj = model.objects.filter(girl_num__gt=f('boy_num'))

f物件支援算術運算

object = model.objects.filter(girl_num__gte=f('boy_num')+20)
f物件的引數如果是datetime/time,可以進行日期的加減運算:

obj = model.objects.filter(create_time__lt=f('create_at')+timedelta(days=5))
2019-08-08

itk中的花式資料切割(二)

上篇切割的特徵是越切越小,這次換個不會變小的方法,當然不同的方法有利有弊,中間取捨,看實際情況。0.先構建乙個與原始資料同等大小的影象,這個是前提條件 略。不清楚的請轉 itk中的基本影象操作 一文 1.沿著z軸按照預設範圍切出方盒子 其實隨便xyz那一邊都一樣 imagetype sizetype...

itk中的花式資料切割(五)

今天繼續研究資料切割,也是對之前四篇切割內容的補充,內容不多,step by step。itk中有乙個類叫做itkcropimagefilter,是itkextractimagefilter的派生方法。先上 看一下基本用法 imagetype sizetype extractsize extract...

花式看超級碗 人工智慧 大資料在碗裡

超級碗 可不是乙個大碗 超級碗 super bowl 是美國國家美式足球聯盟 也稱為國家橄欖球聯盟 的年度冠軍賽,勝者被稱為 世界冠軍 超級碗一般在每年1月最後乙個或2月第乙個星期天舉行,那一天稱為超級碗星期天 super bowl sunday 超級碗是比賽的名稱,其獎盃名稱為文斯 隆巴迪杯 vi...