Python Django2 model 查询介绍(条件、范围、模糊查询)
作者:森林屿麓 发布时间:2023-11-02 15:32:09
条件查询
范围查询
模糊查询
条件查询
all()
返回全部结果集
filter(**kwargs)
返回满足参数定义的结果集 例如
Entry.objects.filter(pub_date__year=2006)
exclude(**kwargs)
返回不满足参数定义的结果集 例如
Entry.objects.exclude(pub_date__year=2006)
链式查询
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()返回的是一个结果集,如果你确定你要返回的是一条结果,那么就可以使用get() 例如
Entry.objects.get(pk=1)
get()与filter()区别
get()返回单一的一条记录,返回类型也是一个对象,filter()返回的实际一个结果集,返回类型为列表。
使用get(),如果查询结果为空,将会引起DoesNotExist exception,而filter()将会返回[]
范围查询
Limiting
Entry.objects.all()[:5]
将会返回前5条记录
Entry.objects.all()[5:10]
将会返回5~10条记录
order_by
排序
Entry.objects.order_by('headline')[0]
将会按照'headline'进行排序,然后返回第一条记录
语法:字段 + 两条下划线 + 内置查询字段
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])
模糊查询
range
常用来筛选出属于某个连续区间的对象
Entry.objects.filter(id__range=[1,3])
contains
包含‘xxx'(大小写敏感),常用于找出包含某些关键字的对象
Entry.objects.filter(type__name__contains='python')
等同于
SELECT ... WHERE name LIKE '%python%';
类似的有icontains (大小写不敏感)。注意contains是大小写敏感的,icontains是大小写不敏感的。
startswith
以‘xxx'开头(大小写敏感)
Entry.objects.filter(name__startswith='高级')
等同于
SELECT ... WHERE name LIKE '高级%';
类似的有istartswith (大小写不敏感)
endswith
以‘xxx'结尾(大小写敏感)
类似的有iendswith (大小写不敏感)
isnull
可设置为True或者False,用来筛选某字段 为NULL / 不为NULL 的对象
Entry.objects.filter(description__isnull=True)
等同
SELECT ... WHERE description IS NULL;
补充知识:Django filter **conditions多条件多字段过滤筛选数据
Application context 应用场景:
新增的一条数据不能与DB库里有的数据重复或者需要多条件/多字段筛选数据时需要用到 **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)
来源:https://blog.csdn.net/u013967628/article/details/82994906
猜你喜欢
- js表单验证只能是写限定的东西大收集 代码如下:ENTER键可以让光标移到下一个输入框<input onkeydown=&q
- 背景客户最近有这样的需求,想通过统计Oracle数据库活跃会话数,并记录在案,利用比对历史的活跃会话的方式,实现对系统整体用户并发量有大概的
- 虽然以前我写过IE6、IE7、IE8共存的解决方案,但是看到IETester这个软件以后那些都已经没有意义了(那些办法副作用比较大,而且实现
- 以前经常吃公司旁边的食堂,人多,排队。夏天的时候,我们总要找一个靠窗口通风好的地方坐,没有空调只有风扇,风扇很多,开关都集中在一个地方,应该
- java连接sqlserver2008数据库代码如下所示:public class SqlServer { public static vo
- 在国外一博客看到的技巧,终于解决IE的这个老大难问题。我在IE的setAttribute bug也提到其解决方法,一是innerHTML,一
- Access数据库,同时操作大量记录(9500条以上)时报错。错误提示:Microsoft JET Database Engine 错误 &
- MaxDB是MySQL AB公司通过SAP认证的数据库。MaxDB数据库服务器补充了MySQL AB产品系列。某些MaxDB特性在MySQL
- 在我们写样式的时候,页面的CSS在经历几个版本的修改之后,可能有些样式已经用不到了,或许将某些样式更名了而原来的忘了删除,总之页面中可能存在
- 英文原文:http://www.smashingmagazine.com/2008/08/18/译文原文:http://blog.bingo
- Mysql数据库是一个多用户,多线程的关系型数据库,是一个客户机/服务器结构的应用程序。它是对个人用户和商业用户是免费的. Mysql数据库
- 代码如下: Function closeHTML(strContent) Dim arrTags, i, OpenPos, ClosePos
- 前言随着网站的内容的增多和用户访问量的增多,网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,,我们往往需要在此时对我们的网站
- 用VBS语言实现的一个简单网页计算器,功能:可以进行加法、减法、乘法、除法、取反、开根号、及指数运算。虽然简单但是比起windows xp自
- 本文实例为大家分享了python实现人民币转大写人民币的具体代码,供大家参考,具体内容如下直接上代码:# -*- coding: utf-8
- 1. php 中的序列化在 PHP 中,序列化是将数据结构或对象转换为可以存储或传输的字符串表示的过程,经过序列化之后的对象或者数据结构,就
- 只有mdf文件的数据库附加失败的修复 附加时报如下错误: 服务器: 消息 1813,级别 16,状态 2,行 1 未能打开新数据库 '
- 为了庆祝jQuery的四周岁生日, jQuery的团队荣幸的发布了jQuery Javascript库的最新主要版本! 这个版本包含了大量的
- 在工作中,作为一名开发者的你,也许偶尔需要从事维护数据库的工作。下面我们来介绍一下两个SQL服务器的维护技巧:轻松改变数据库拥有者、整理索引
- 每周的《午间欢乐购》和《周末疯狂购》,已经成为视觉组的固定需求。从开始接触到现在5个月的时间里,思维也和这些小小banner逐渐碰撞出火花。