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基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 Python
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 Python
详解django三种文件下载方式
Apr 06 Python
python实现简易数码时钟
Feb 19 Python
Python数据集切分实例
Dec 08 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
Apr 17 Python
python requests指定出口ip的例子
Jul 25 Python
python计算n的阶乘的方法代码
Oct 25 Python
关于numpy中eye和identity的区别详解
Nov 29 Python
tensorflow 初始化未初始化的变量实例
Feb 06 Python
详解Python修复遥感影像条带的两种方式
Feb 23 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 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
Array of country list in PHP with Zend Framework
2011/10/17 PHP
深入php常用函数的使用汇总
2013/06/08 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
JQuery右键菜单插件ContextMenu使用指南
2014/12/19 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
ajax异步请求详解
2017/01/06 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
2019/12/12 Javascript
es6函数之rest参数用法实例分析
2020/04/18 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
基于python的汉字转GBK码实现代码
2012/02/19 Python
python 图片验证码代码分享
2012/07/04 Python
详解Python Socket网络编程
2016/01/05 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
opencv python在视屏上截图功能的实现
2020/03/05 Python
Python使用进程Process模块管理资源
2020/03/05 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
香港化妆品经销商:我的公主
2016/08/05 全球购物
医生自荐信
2013/10/11 职场文书
《秋游》教学反思
2014/04/24 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
Python如何让字典保持有序排列
2022/04/29 Python