django model 条件过滤 queryset.filter(**condtions)用法详解

 更新时间:2020年05月20日 11:15:52   作者:yoyo008  
这篇文章主要介绍了django model 条件过滤 queryset.filter(**condtions)用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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)用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Pandas之缺失数据的实现

    Pandas之缺失数据的实现

    这篇文章主要介绍了Pandas之缺失数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python OpenCV阈值处理详解

    Python OpenCV阈值处理详解

    阈值处理是一种简单、有效的将图像划分为前景和背景的方法。图像分割通常用于根据对象的某些属性(例如,颜色、边缘或直方图)从背景中提取对象。本文将为大家详细介绍OpenCV中的阈值处理,需要的可以参考一下
    2022-02-02
  • Caffe卷积神经网络数据层及参数

    Caffe卷积神经网络数据层及参数

    这篇文章主要为大家介绍了Caffe卷积神经网络数据层及参数示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 详解Python如何在多层循环中使用break/continue

    详解Python如何在多层循环中使用break/continue

    关于break/continue这两个关键字在平常的使用过程中一直比较迷糊。所以本文将详细讲讲Python如何在多层循环中使用break/continue,需要的可以参考一下
    2022-05-05
  • Python3 使用pillow库生成随机验证码

    Python3 使用pillow库生成随机验证码

    这篇文章主要介绍了Python3 使用pillow库生成随机验证码,需要的朋友可以参考下
    2019-08-08
  • Python轻松读写TOML文件实现示例

    Python轻松读写TOML文件实现示例

    这篇文章主要介绍了Python轻松读写TOML文件实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Django原生sql也能使用Paginator分页的示例代码

    Django原生sql也能使用Paginator分页的示例代码

    这篇文章主要介绍了Django原生sql也能使用Paginator分页的示例代码,主要使用了count和__getslice__,有兴趣的可以了解一下
    2017-11-11
  • Python使用pyecharts绘制世界地图,省级地图,城市地图实例详解

    Python使用pyecharts绘制世界地图,省级地图,城市地图实例详解

    这篇文章主要介绍了如何使用Python中的pyecharts库绘制世界地图、中国地图、省级地图、市级地图,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试
    2022-02-02
  • pymongo为mongodb数据库添加索引的方法

    pymongo为mongodb数据库添加索引的方法

    这篇文章主要介绍了pymongo为mongodb数据库添加索引的方法,涉及Python操作mongodb数据库的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-05-05
  • Python实现创建模块的方法详解

    Python实现创建模块的方法详解

    导入一个模块,我们一般都会使用 import 关键字,但有些场景下 import 难以满足我们的需要。所以除了 import 之外还有很多其它导入模块的方式,下面就来介绍一下
    2022-07-07

最新评论