Django 内置查询表达式

本文深入探讨Django ORM查询表达式的高效应用,包括contains、icontains、in、gt、lt、startwith、endswith、range等操作符的使用场景与SQL对应语法,助您提升数据检索技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

django 内置了很多查询表达式,建议过一遍 django 官方文档留个印象,了解每个表达式的作用,以后碰到相关的需求就可以快速定位到文档查询其用途:Field lookups

 

django使用filter时为了提高查找效率,有以下几种常用方法:

 

(1)contains

contains是 精确大小写

qs.filter(name__contains="e")

SQL语句 :

'contains': 'LIKE BINARY %s',

(2)icontains

’icontains’中的’i’表示忽略大小写

qs.filter(name__icontains="e")

SQL语句 :

'icontains': 'LIKE %s',
 

(3)in

在列表中

Entry.objects.filter(id__in=[1, 3, 4])
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

SQL语句 :

SELECT ... WHERE id IN (1, 3, 4);
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

(4) gt

gt:大于

Entry.objects.filter(id__gt=4)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

SQL语句 :

SELECT ... WHERE id > 4;
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

同理还有 gte lt lte (大等、小于、小等)

(5) startwith

查找以xxx开头并区分大小写

Entry.objects.filter(headline__istartswith='will')
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

SQL语句 :

SELECT ... WHERE headline ILIKE 'Will%';
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

同理还有 istartwith :查找以xxx开头不区分大小写

 

(6)endswitch

查找xxx以结尾并区分大小写

Entry.objects.filter(headline__endswith='cats')
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

SQL语句 :

SELECT ... WHERE headline LIKE '%cats';
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

同理还有 iendwith :查找以xxx结尾不区分大小写

(7)range

查找范围:

import datetime
start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2005, 3, 31)
Entry.objects.filter(pub_date__range=(start_date, end_date))
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

SQL语句 :

SELECT ... WHERE pub_date BETWEEN '2005-01-01' and '2005-03-31';

这样的方法还多,推荐看一遍官方文档

 

这些django内置的方法都非常好用,记住后对于基础的搜索以及查找都会简单不少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值