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进阶教程之词典、字典、dict
Aug 29 Python
Python实现对PPT文件进行截图操作的方法
Apr 28 Python
Linux 发邮件磁盘空间监控(python)
Apr 23 Python
Python使用pylab库实现画线功能的方法详解
Jun 08 Python
python实现二分查找算法
Sep 21 Python
python中的set实现不重复的排序原理
Jan 24 Python
python中in在list和dict中查找效率的对比分析
May 04 Python
对python GUI实现完美进度条的示例详解
Dec 13 Python
详解python中sort排序使用
Mar 23 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
Jun 08 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
详解tensorflow之过拟合问题实战
Nov 01 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读取msn上的用户信息类
2008/12/05 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
个人先进事迹总结
2015/02/26 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
2015大一新生军训感言
2015/08/01 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers