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 相关文章推荐
python33 urllib2使用方法细节讲解
Dec 03 Python
Python中urllib2模块的8个使用细节分享
Jan 01 Python
C#返回当前系统所有可用驱动器符号的方法
Apr 18 Python
Python常用知识点汇总
May 08 Python
Python urls.py的三种配置写法实例详解
Apr 28 Python
python实现最长公共子序列
May 22 Python
Python 实现opencv所使用的图片格式与 base64 转换
Jan 09 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
Django bulk_create()、update()与数据库事务的效率对比分析
May 15 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
Python pyecharts绘制条形图详解
Apr 02 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
May 11 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中static静态变量的使用方法详解
2010/06/04 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
javascript仿qq界面的折叠菜单实现代码
2012/12/12 Javascript
关于JS中的闭包浅谈
2013/08/23 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
js判断主流浏览器类型和版本号的简单实现代码
2016/05/26 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
Python后台开发Django会话控制的实现
2019/04/15 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
公司成立感言
2014/01/11 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
2013年军训通讯稿
2014/02/05 职场文书
产品质量承诺书范文
2014/03/27 职场文书
建设投标担保书
2014/05/13 职场文书
培训研修方案
2014/06/06 职场文书
红楼梦读书笔记
2015/06/25 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL