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的Flask开发框架简单上手笔记
Nov 16 Python
python3连接MySQL数据库实例详解
May 24 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
python3学生名片管理v2.0版
Nov 29 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 Python
pytorch标签转onehot形式实例
Jan 02 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
python实现简单井字棋游戏
Mar 04 Python
使用Python防止SQL注入攻击的实现示例
May 21 Python
Tensorflow使用Anaconda、pycharm安装记录
Jul 29 Python
如何利用python之wxpy模块玩转微信
Aug 17 Python
python操作toml文件的示例代码
Nov 27 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
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
Javascript的&amp;&amp;和||的另类用法
2014/07/23 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
javascript trie前缀树的示例
2018/01/29 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python中字符串的格式化方法小结
2016/05/03 Python
Python+微信接口实现运维报警
2016/08/27 Python
简单实现python收发邮件功能
2018/01/05 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
Python计算IV值的示例讲解
2020/02/28 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
C# Debug和Testing相关面试题
2015/10/25 面试题
标准自荐信范文
2014/01/29 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
个人租房协议书
2014/04/09 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
2015新年寄语大全
2014/12/08 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
python munch库的使用解析
2021/05/25 Python
手残删除python之后的补救方法
2021/06/26 Python