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字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
详解flask表单提交的两种方式
Jul 21 Python
python 高效去重复 支持GB级别大文件的示例代码
Nov 08 Python
python元组的概念知识点
Nov 19 Python
python绘制无向图度分布曲线示例
Nov 22 Python
PyCharm无法引用自身项目解决方式
Feb 12 Python
Python编程快速上手——正则表达式查找功能案例分析
Feb 28 Python
Python使用GitPython操作Git版本库的方法
Feb 29 Python
python shell命令行中import多层目录下的模块操作
Mar 09 Python
Django日志及中间件模块应用案例
Sep 10 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 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
中东人咖啡哲学
2021/03/03 咖啡文化
IE中jscript/javascript的条件编译
2006/09/07 Javascript
网页自动跳转代码收集
2009/09/27 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
Python input函数使用实例解析
2019/11/22 Python
Python编写单元测试代码实例
2020/09/10 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
医药专业应届毕业生求职信范文
2014/01/01 职场文书
护理专业毕业生自荐信范文
2014/01/05 职场文书
平面设计求职信
2014/03/10 职场文书
珍惜水资源建议书
2014/03/12 职场文书
2014小学年度工作总结
2014/12/20 职场文书
金砖之国观后感
2015/06/11 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
Python selenium的这三种等待方式一定要会!
2021/06/10 Python