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实现一个简单的MySQL类
Jan 07 Python
Python中文件操作简明介绍
Apr 13 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
python字符串循环左移
Mar 08 Python
python使用time、datetime返回工作日列表实例代码
May 09 Python
简单了解python装饰器原理及使用方法
Dec 18 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 Python
Python try except else使用详解
Jan 12 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
Feb 23 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的面向对象编程
2006/10/09 PHP
php 中英文语言转换类代码
2011/08/11 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
php 类自动载入的方法
2015/06/03 PHP
PHP实现QQ空间自动回复说说的方法
2015/12/02 PHP
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
介绍Python中的文档测试模块
2015/04/28 Python
python实现的简单窗口倒计时界面实例
2015/05/05 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
Opencv求取连通区域重心实例
2020/06/04 Python
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
安全保证书怎么写
2015/02/28 职场文书
股东大会通知
2015/04/24 职场文书
加薪通知
2015/04/25 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
导游词之崇武古城
2019/10/07 职场文书
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript