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中Genarator函数用法分析
Apr 08 Python
详解python中requirements.txt的一切
Mar 03 Python
Python实现简单的用户交互方法详解
Sep 25 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
python爬虫模块URL管理器模块用法解析
Feb 03 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
Python logging日志模块 配置文件方式
Jul 12 Python
浅谈anaconda python 版本对应关系
Oct 07 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 Python
python中pow函数用法及功能说明
Dec 04 Python
Django实现WebSocket在线聊天室功能(channels库)
Sep 25 Python
python数字图像处理:图像简单滤波
Jun 28 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程序的方法小结
2012/02/23 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
JavaScript静态的动态
2006/09/18 Javascript
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
js 加密压缩出现bug解决方案
2014/11/25 Javascript
js中document.write的那点事
2014/12/12 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
基于vue实现分页效果
2017/11/06 Javascript
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
python实现指定字符串补全空格的方法
2015/04/30 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
Python如何实现转换URL详解
2019/07/02 Python
Python 3.8 新功能全解
2019/07/25 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
思想汇报格式
2014/01/05 职场文书
简洁的英文求职信范文
2014/05/03 职场文书
美术社团活动总结
2014/06/27 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
同学会邀请函模板
2015/01/30 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python
postgresql中如何执行sql文件
2023/05/08 PostgreSQL