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实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
用Python编写一个简单的俄罗斯方块游戏的教程
Apr 03 Python
python二分查找算法的递归实现方法
May 12 Python
python操作MySQL 模拟简单银行转账操作
Sep 27 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
详解Django的CSRF认证实现
Oct 09 Python
详解Python装饰器
Mar 25 Python
python二维码操作:对QRCode和MyQR入门详解
Jun 24 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 Python
python 使用tkinter+you-get实现视频下载器
Nov 17 Python
教你用python实现一个无界面的小型图书管理系统
May 21 Python
python tkinter Entry控件的焦点移动操作
May 22 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
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
JavaScript 继承详解(四)
2009/07/13 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
JQuery遍历元素的后代和同胞实现方法
2016/09/18 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
2019/12/12 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
python爬取个性签名的方法
2018/06/17 Python
django最快程序开发流程详解
2019/07/19 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
详解rem 适配布局
2018/10/31 HTML / CSS
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
花卉与景观设计系大学生求职信
2013/10/01 职场文书
大学生职业生涯规划书模板
2014/01/03 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
教师考核评语大全
2014/12/31 职场文书
公司规章制度范本
2015/08/03 职场文书
社区服务活动感想
2015/08/11 职场文书
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python