Django models filter筛选条件详解


Posted in Python onMarch 16, 2020

条件选取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

例q1.filter(pub_date__gte=datetime.date.today())表示为时间>=now,q1.exclude(pub_date__gte=datetime.date.today())表示为<=now

“在django models中取得一个字段的distinct值”。

就是select distinct xxx from table_name ...这样的功能。

使用values会生成ValuesQuerySet(形如N个dict组成的list),猜测大数据无额外性能影响,毕竟queryset系列都是使用时才查询操作的。

xxxx.objects.values("field_name").distinct()

或者

xxxx.objects.distinct().values("field_name")

补充知识:django中的objects.get和objects.filter方法的区别

为了说明它们两者的区别定义2个models

class Student(models.Model): 
   name = models.CharField('姓名', max_length=20, default='') 
   age = models.CharField('年龄', max_length=20, default='') 
class Book(models.Model): 
   student = models.ForeignKey(Student)

一. 先说下django的obj.get():

django的get是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错。

比如我数据库里有一条记录,记录的name的值是"django"的话,我用student = Student.objects.get(name='django'),

返回的是一个记录对象,你可以通过student.__dict__来查看,它返回的是一个字典的形式,{'key':valeus},key是字段的名称,而values是值的内容。

而如果我用get方法来查询一个数据库里不存在的记录,程序会报错。

比如:

student = Student.objects.get(name='python')

如果你用django的get去取得关联表的数据的话,而关键表的数据如果多于2条的话也会报错。

比如我的student表里有一个记录:

id name age
1 python 24

book表:

id student_id
1 1
2 1

我用

student = Student.objects.get(name='python') 
  book = Book.objects.get(student)

它也会报错,因为book表有2条记录和student表相匹配。

二. 再说下django filter:

django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。

比如我数据库里有一条记录,记录的name的值是Python的话,我用

student = Student.objects.filter(name='python')

它返回的student是一个对象的列表,可以看的出来student[0]和上面的get方式返回的student的结果是一样的。

以上这篇Django models filter筛选条件详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
python实现批量nii文件转换为png图像
Jul 18 Python
Python实现微信机器人的方法
Sep 06 Python
Python终端输出彩色字符方法详解
Feb 11 Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 Python
Android Q之气泡弹窗的实现示例
Jun 23 Python
keras自动编码器实现系列之卷积自动编码器操作
Jul 03 Python
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
Apr 05 Python
Python爬虫:从m3u8文件里提取小视频的正确操作
May 14 Python
python递归调用中的坑:打印有值, 返回却None
Mar 16 #Python
django 前端页面如何实现显示前N条数据
Mar 16 #Python
Python迭代器Iterable判断方法解析
Mar 16 #Python
python 递归调用返回None的问题及解决方法
Mar 16 #Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 #Python
django中的数据库迁移的实现
Mar 16 #Python
django之从html页面表单获取输入的数据实例
Mar 16 #Python
You might like
如何去掉文章里的 html 语法
2006/10/09 PHP
php采集时被封ip的解决方法
2010/08/29 PHP
一个基于PDO的数据库操作类
2011/03/24 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
对Python 3.5拼接列表的新语法详解
2018/11/08 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
维德科技C#面试题笔试题
2015/12/09 面试题
《我要的是葫芦》教学反思
2014/02/23 职场文书
公司委托书格式范文
2014/04/04 职场文书
医院科室评语
2015/01/04 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
房贷工资证明范本
2015/06/12 职场文书
母亲去世追悼词
2015/06/23 职场文书
欠条格式范本
2015/07/03 职场文书
python如何做代码性能分析
2021/04/26 Python