常见的查询操作符:
-
exact
— 精确匹配Q(name__exact='Great Wall') # 精确匹配 name 字段值为 'Great Wall'
-
iexact
— 忽略大小写的精确匹配Q(name__iexact='Great Wall') # 忽略大小写匹配 name 字段值为 'Great Wall'
-
contains
— 匹配包含某个子字符串(大小写敏感)Q(name__contains='Wall') # 匹配 name 字段中包含 'Wall'
-
icontains
— 忽略大小写的包含匹配Q(name__icontains='wall') # 忽略大小写,匹配 name 字段中包含 'wall'
-
gt
— 大于(用于数值、日期等字段)Q(price__gt=100) # 查询 price 字段大于 100 的记录
-
lt
— 小于(用于数值、日期等字段)Q(price__lt=100) # 查询 price 字段小于 100 的记录
-
gte
— 大于等于Q(price__gte=100) # 查询 price 字段大于等于 100 的记录
-
lte
— 小于等于Q(price__lte=100) # 查询 price 字段小于等于 100 的记录
-
in
— 在给定的列表中Q(id__in=[1, 2, 3]) # 查询 id 字段为 1、2 或 3 的记录
-
isnull
— 是否为空值Q(name__isnull=True) # 查询 name 字段为空的记录
-
range
— 在指定范围内Q(price__range=(100, 200)) # 查询 price 字段在 100 和 200 之间的记录
-
year
,month
,day
— 针对日期字段的查询Q(created_at__year=2021) # 查询创建时间在 2021 年的记录 Q(created_at__month=6) # 查询创建时间在 6 月的记录 Q(created_at__day=15) # 查询创建时间在 15 号的记录
-
startswith
— 以指定字符串开头(大小写敏感)Q(name__startswith='Great') # 查询 name 字段以 'Great' 开头的记录
-
istartswith
— 忽略大小写的以指定字符串开头Q(name__istartswith='great') # 忽略大小写,查询 name 字段以 'great' 开头的记录
-
endswith
— 以指定字符串结尾(大小写敏感)Q(name__endswith='Wall') # 查询 name 字段以 'Wall' 结尾的记录 Q(name__iendswith='wall') # 忽略大小写,查询 name 字段以 'wall' 结尾的记录
原文链接:Django ORM模型Q函数查询方法