django model 条件过滤 queryset.filter(**condtions)用法详解


Posted in Python onMay 20, 2020

1、下述代码查询model对应数据库中日期等于2018-05-22的数据:

queryset = model.objects.all() 
condtions: {'date': '2018-05-22'}
query_res = queryset.filter(**condtions)

2、下述代码查询model对应数据库中日期小于2018-05-22的数据:

queryset = model.objects.all() 
condtions: {'date__lt': '2018-05-22'}
query_res = queryset.filter(**condtions)

3.总结:条件选取querySet的时候,filter表示=,exclude表示!=。

querySet.distinct() 去重复

__exact 精确等于 like 'aaa'
__iexact 精确等于 忽略大小写 ilike 'aaa'
__contains 包含 like '%aaa%'
__icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以...开头
__istartswith 以...开头 忽略大小写
__endswith 以...结尾
__iendswith 以...结尾,忽略大小写
__range 在...范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False

如果参数是字典,如

condtions: {'date__lt': '2018-05-22','status': '未支付','name__exact': 'yangxia'}
Entry.objects.filter(**condtions)相当于 Entry.objects.filter(date__lt= '2018-05-22',status='未支付',name__exact='yangxia')

翻译成sql语句是

select * from Entry.objects where date<='2018-05-22' and status='未支付' and name like 'yangxia'

filter例子:

>> q1 = Entry.objects.filter(headline__startswith="What")
>> q2= q1.filter(pub_date__gte=datetime.date.today())
>>> q3= q.filter(pub_date__lte=datetime.date.today())

exclude例子:

>>> q1 = q.exclude(body_text__icontains="food")

>> q2 = q1.exclude(pub_date__gte=datetime.date.today())

补充知识:如何使用django的objects.filter()方法匹配多个关键字

介绍:

今天在使用django的时候忽然想用到,如何匹配多个关键字的操作,我们知道django有一个objects.filter()方法,我们可以通过如下一句代码实现匹配数据库中title包含key关键词的文章名称。

table.objects.filter(title__contains=key)

问题:

但是我的需求是我不仅仅只需要匹配出一个关键字的文章而是多个关键字的文章,那么我们该如何使用django的objects.filter()?

table.objects.filter(title__contains=key1)+.objects.filter(title__contains=key2)+....?

解决:

我们都知道在正常的sql语句中如果我们需要匹配多个关键字的title可以这样做

select title from data where title regexp 'key1|key2'
select title from data where title like '%key1%' or like '%key2%'

以上的两种sql语句都是选择出title属性中存在key1和key2的所有文章,那么django是不是也会有一种方法匹配多个关键字呢?当然有就是下面的代码

from django.db.models import Q
table.object.filter(Q(title__startswith='key1') | Q(title__startswith='key2'))

首先导入django的Q方法然后在filter中添加对应的匹配即可

以上这篇django model 条件过滤 queryset.filter(**condtions)用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现DNS正向查询、反向查询的例子
Apr 25 Python
wxPython窗口中文乱码解决方法
Oct 11 Python
python类和函数中使用静态变量的方法
May 09 Python
python3爬虫之设计签名小程序
Jun 19 Python
python将list转为matrix的方法
Dec 12 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
python实现统计文本中单词出现的频率详解
May 20 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
Pytorch GPU显存充足却显示out of memory的解决方式
Jan 13 Python
Python编程快速上手——强口令检测算法案例分析
Feb 29 Python
pandas 像SQL一样使用WHERE IN查询条件说明
Jun 05 Python
如何在sublime编辑器中安装python
May 20 #Python
Django 解决distinct无法去除重复数据的问题
May 20 #Python
在主流系统之上安装Pygame的方法
May 20 #Python
python Django 反向访问器的外键冲突解决
May 20 #Python
Python如何实现爬取B站视频
May 20 #Python
django在开发中取消外键约束的实现
May 20 #Python
520使用Python实现“我爱你”表白
May 20 #Python
You might like
php UTF8 文件的签名问题
2009/10/30 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
2017/06/19 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
python re正则表达式模块(Regular Expression)
2014/07/16 Python
python实现根据月份和日期得到星座的方法
2015/03/27 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
2019/01/26 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
解决Django中多条件查询的问题
2019/07/18 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
亲子运动会的活动方案
2014/08/17 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
简历自我评价优缺点
2015/03/11 职场文书