【Django】关于数据过滤
学到关于数据库过滤方面的内容总结部分注意点:
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】关于数据过滤的更多相关文章
- Django Model数据访问Making queries
创建完Model之后, Django 自动为你提供一套数据库抽象层的API,利用它可以完成创建,提取,更新,删除对象的操作. 以下面的Model为例: class Blog(models.Model) ...
- 解决-Django使用filter过滤时间,无法获取月份的问题
django中的filter日期查询属性有:year.month.day.week_day.hour.minute.second 但是但我在使用过滤查询是却总是无法过滤出月份,各种查资料,最后才发现是 ...
- django model数据 时间格式
from datetime import datetime dt = datetime.now() print '时间:(%Y-%m-%d %H:%M:%S %f): ' , dt.strftime( ...
- ABP框架 - 数据过滤
文档目录 本节内容: 简介 预定义过滤 ISoftDelete 何时可用? IMustHaveTenant 何时可用? IMayHaveTenant 何时可用? 禁用过滤 关于using声明 关于多租 ...
- C#实现通用数据过滤窗体
最近一直在做WINFORM项目,所以经常有些新的想法或尝试与大家分享,之前与大家分享了通用窗体遮罩层.通用可附加数据绑定的DataGridView.窗体渐显,今天来分享一个大家在其它软件中常见的功能: ...
- php数据过滤函数与方法示例【转载】
1.php提交数据过滤的基本原则 1)提交变量进数据库时,我们必须使用addslashes()进行过滤,像我们的注入问题,一个addslashes()也就搞定了.其实在涉及到变量取值时,intval( ...
- PHP数据过滤
1.php提交数据过滤的基本原则 1)提交变量进数据库时,我们必须使用addslashes()进行过滤,像我们的注入问题,一个addslashes()也就搞定了.其实在涉及到变量取值时,intval ...
- SQL学习之高级数据过滤
一.高级数据过滤之IN操作符 IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配.IN取一组由逗号分隔.括在圆括号中的合法值.代码如下: select ItemId,ItemName,Che ...
- FastReport 数据过滤
FastReport 数据过滤 在DataBind 的 OnBeforePrint 设置条件 例:显示 大于0 的数据 procedure MasterData1OnBeforePrint(Sen ...
- .NET WinForm程序中给DataGridView表头添加下拉列表实现数据过滤
转:http://www.cnblogs.com/jaxu/archive/2011/08/04/2127365.html 我们见过Excel中的数据过滤功能,可以通过点击表头上的下拉列表来实现数据的 ...
随机推荐
- yii2 获取模块名、控制器名、方法名
在视图中: 模块名 $this->context->module->id控制器名 $this->context->id方法名 $this->context-> ...
- 19/03/13python学习笔记
1.变量命名 name1 = 1 name2 = "sunj" 2.命名变量的规则 (1.变量是字母.数字.下划线的组合(2.不能以数字开头(3.不能用关键词命名变量(4.变量中间 ...
- 在html中做表格以及给表格设置高宽字体居中和表格线的粗细
今天学习了如何用HTML在网页上做表格,对于我这种横列部分的属实有点麻烦,不过在看着表格合并单过格的时候我把整个表格看做代码就容易多了. 对于今天的作业让我学习了更多的代码,对于代码的应用希望更加熟练 ...
- python trie
Trie 库 https://github.com/pytries/marisa-trie/blob/master/docs/tutorial.rst http://marisa-trie.readt ...
- Web前端新手想提升自身岗位竞争力,需做好这3件事!
Web前端开发行业的发展前景毋庸置疑,只要是互联网企业,几乎都需要Web前端开发工程师.虽然Web前端入行门槛低,但竞争逐渐激烈,想要取得高薪,就一定要具备强大的实力.那么,在重庆Web前端培训学习中 ...
- 深入Session2
一.分布式环境Session的处理方法 分布式环境下要保持会话跟踪最简单的方式是只依靠客户端Cookie保存,不过大多数情况下还需要用到Session,一般的处理方式如下: 1.Session复制 每 ...
- Nginx源码结构及如何处理请求
一.源码结构 1:下载安装包后,解压,可以看到目录结构,其中src目录下放的是源码 2:src源码目录下,可以看到这几个目录 mail:mail目录中存放了实现Nginx服务器 ...
- Django2.0资料
The Django Book 2.0 中文版:点击下载 Django课件和代码:点击下载
- Python安装与Pycharm使用入门
一.安装Python 1.Linux下安装 一般系统默认已安装2.6.6版本,升级成2.7版本, 但 2.6 不能删除,因为系统对它有依赖,epel源里最新的也是2.6版本,所以以源代码的方式安装2. ...
- Linux和Windows启动后台程序
平时很多时候,我们需要通过脚本命令调用执行程序,集成一体后方便使用快捷.但是启动脚本窗口比较碍眼,能设置为后台运行既方便又美观. Linux启动后台程序 1.后台执行 nohup方法:不挂断的运行命令 ...