【Django】关于数据过滤

时间:2022-11-27 12:31:41

学到关于数据库过滤方面的内容总结部分注意点:

views.py

def TestFilter(request):
# 多条件过滤
# list=BookInfo.book_manager.filter(pk__gt=5,btitle__contains='h')
# 过滤符合条件的第一个值
# list=BookInfo.book_manager.filter(pk__gt=5,btitle__contains='h').first()
# 过滤符合条件的最后一个值
# list=BookInfo.book_manager.filter(pk__gt=5,btitle__contains='h').last()
# 查询是否存在符合条件的数据,返回true或false
# list=BookInfo.book_manager.filter(pk__gt=5,btitle__contains='h').exists()
# 统计符合条件的数据的总数
# list=BookInfo.book_manager.filter(pk__gt=5,btitle__contains='h').count()
context={
'list':list
}
return render(request,'filter.html',context) 1.注意当使用filter过滤时,返回的是一个可迭代对象,这时候模板需要用for来循环把值输出
{% for book in list%}
{{ book }}
{% endfor %} 而如果使用了first(),last(),exists(),count()的方法,只返回一个对象,模板就不能用for,否则报错
'int' object is not iterable大概意思就是返回的不是一个可迭代对象
所以返回一个对象的时候模板不能用for要改为{{book}} 相反如果是filter返回了一个可迭代的对象,而模板没有使用for,只是使用{{book}}的话不会报错,直接返回: <QuerySet [<BookInfo: hahahha>, <BookInfo: hehehehehe>]>直接返回了一个QuerySet类型的列表对象。
2.如果first函数直接这样用
list=BookInfo.book_manager.first(pk__gt=5,btitle__contains='h')是会报错
first() got an unexpected keyword argument 'pk__gt'
所以,注意不要在first last这些函数里面放入筛选条件
list=BookInfo.book_manager.first()这种写法是可以的,直接返回表里的第一个数据,只是没有筛选条件
所以如果需要添加筛选条件,就要先使用,filter,然后再用first()last()来提取符合条件的第一个或最后一个值。 get()返回单个对象
如果返回值有多个对象则报
  • 如果未找到会引发"模型类.DoesNotExist"异常
  • 如果多条被返回,会引发"模型类.MultipleObjectsReturned"异常
														
		

【Django】关于数据过滤的更多相关文章

  1. Django Model数据访问Making queries

    创建完Model之后, Django 自动为你提供一套数据库抽象层的API,利用它可以完成创建,提取,更新,删除对象的操作. 以下面的Model为例: class Blog(models.Model) ...

  2. 解决-Django使用filter过滤时间,无法获取月份的问题

    django中的filter日期查询属性有:year.month.day.week_day.hour.minute.second 但是但我在使用过滤查询是却总是无法过滤出月份,各种查资料,最后才发现是 ...

  3. django model数据 时间格式

    from datetime import datetime dt = datetime.now() print '时间:(%Y-%m-%d %H:%M:%S %f): ' , dt.strftime( ...

  4. ABP框架 - 数据过滤

    文档目录 本节内容: 简介 预定义过滤 ISoftDelete 何时可用? IMustHaveTenant 何时可用? IMayHaveTenant 何时可用? 禁用过滤 关于using声明 关于多租 ...

  5. C&num;实现通用数据过滤窗体

    最近一直在做WINFORM项目,所以经常有些新的想法或尝试与大家分享,之前与大家分享了通用窗体遮罩层.通用可附加数据绑定的DataGridView.窗体渐显,今天来分享一个大家在其它软件中常见的功能: ...

  6. php数据过滤函数与方法示例【转载】

    1.php提交数据过滤的基本原则 1)提交变量进数据库时,我们必须使用addslashes()进行过滤,像我们的注入问题,一个addslashes()也就搞定了.其实在涉及到变量取值时,intval( ...

  7. PHP数据过滤

    1.php提交数据过滤的基本原则  1)提交变量进数据库时,我们必须使用addslashes()进行过滤,像我们的注入问题,一个addslashes()也就搞定了.其实在涉及到变量取值时,intval ...

  8. SQL学习之高级数据过滤

    一.高级数据过滤之IN操作符 IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配.IN取一组由逗号分隔.括在圆括号中的合法值.代码如下: select ItemId,ItemName,Che ...

  9. FastReport 数据过滤

    FastReport 数据过滤 在DataBind 的 OnBeforePrint 设置条件   例:显示 大于0 的数据 procedure MasterData1OnBeforePrint(Sen ...

  10. &period;NET WinForm程序中给DataGridView表头添加下拉列表实现数据过滤

    转:http://www.cnblogs.com/jaxu/archive/2011/08/04/2127365.html 我们见过Excel中的数据过滤功能,可以通过点击表头上的下拉列表来实现数据的 ...

随机推荐

  1. apache开源项目--thrift

    Thrift 是一个软件框架(远程过程调用框架),用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引 擎,以构建在 C++, Java, Python, PHP, Ruby, ...

  2. C&num; 获取随机可用端口号

    TCP与UDP段结构中端口地址都是16比特,可以有在0---65535范围内的端口号.对于这65536个端口号有以下的使用规定: (1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来 ...

  3. Silverlight中的拖拽实现的图片上传

    原文 http://blog.csdn.net/dujingjing1230/article/details/5443003 在Silverlight中因为可以直接从系统的文件夹里面拖出来一个文件直接 ...

  4. HTTP 301 跳转和302跳转的区别

    常用的重定向方式有: 301 redirect, 302 redirect 与 meta fresh: 301 redirect::301代表永久性转移(Permanently Moved),301重 ...

  5. 【转】sql语句的优化分析

    开门见山,问题所在 sql语句性能达不到你的要求,执行效率让你忍无可忍,一般会时下面几种情况. 网速不给力,不稳定. 服务器内存不够,或者SQL 被分配的内存不够. sql语句设计不合理 没有相应的索 ...

  6. dedecms内容页调用图片集文档的图集图片

    2016-8-26 0 条评论 dedecms模板制作 3,209 ℃ 织梦dedecms设置了图片集内容模型的网站栏目文档可以上传图集图片,并提供了单页多图样式.幻灯片样式.多缩略图样式三种表现方式 ...

  7. (四十八)Quartz2D引擎进阶

    图形上下文栈: 应用,修改过上下文后,下一次画会在这个基础上进行,如果清空状态,需要上下文栈. 可以先把原来的上下文保存起来,然后恢复: - (void)drawRect:(CGRect)rect { ...

  8. JS JSON对象相关

    1.多对象合并 将2个或2个以上对象(object{....})中的属性进行合并,即最后合并为一个object{.....} 解决办法:Object.assign 方法 var form = {nam ...

  9. vue单页面应用刷新网页后vuex的state数据丢失的解决方案

    1. 产生原因其实很简单,因为store里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例,store里面的数据就会被重新赋值. 2. 解决思路一种是state里的数据全部是通过请求 ...

  10. Win10环境下载安装MySQL Community 8&period;0&period;12

    1.下载MySQL Community 8.0.12的免安装版,下载地址:https://dev.mysql.com/downloads/mysql/ 2.解压到D:\Program Files\My ...