【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"异常


原文地址:https://www.cnblogs.com/HAHACHANGEFROMNOW/p/9570554.html

时间: 2024-11-03 17:00:13

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

Django Model数据访问Making queries

创建完Model之后, Django 自动为你提供一套数据库抽象层的API,利用它可以完成创建,提取,更新,删除对象的操作. 以下面的Model为例: class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() # On Python 3: def __str__(self): def __unicode__(self): return self.name class

FastReport 数据过滤

FastReport 数据过滤 在DataBind 的 OnBeforePrint 设置条件 例:显示 大于0 的数据 procedure MasterData1OnBeforePrint(Sender: TfrxComponent); begin MasterData1.Visible :=  (<FxDB."Counts">) > 0; end; FastReport 数据过滤,布布扣,bubuko.com

coreseek 自定义词库(四)数据过滤

条件过滤在列表中是常用的功能,使用mysql数据库和sphinx进行搜索需要安装sphinx引擎 mysql命令行中, show engine sphinx states; 可以查看是否有  sphinxex引擎,如果没有则需要安装,否则无法使用这样的语句: select * from documents where group_id = 2 and query='@title 测试;mode=extended'; 安装sphinx引擎大家可以参考: http://blog.zhuyin.org

php 数据过滤

1.php提交数据过滤的基本原则 1)提交变量进数据库时,我们必须使用addslashes()进行过滤,像我们的注入问题,一个addslashes()也就搞定了.其实在涉及到变量取值时,intval()函数对字符串的过滤也是个不错的选择.2)在php.ini中开启magic_quotes_gpc和magic_quotes_runtime.magic_quotes_gpc可以把get,post,cookie里的引号变为斜杠.magic_quotes_runtime对于进出数据库的数据可以起到格式话

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

转:http://www.cnblogs.com/jaxu/archive/2011/08/04/2127365.html 我们见过Excel中的数据过滤功能,可以通过点击表头上的下拉列表来实现数据的过滤,这个功能很实用,省去了我们需要在程序中单独设计数据的查询过滤模块,功能直接依赖于数据绑定控件DataGridView.先来看看Excel中的数据过滤功能. 要想在DataGridView中实现类似于Excel的这种功能其实也并非难事.来看看msdn上的一篇文章,上面有详细的介绍,不过目前只有全

Angularjs 数据过滤

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="X-UA-Compatible"content="edge" /> <meta name="viewport"con

[MySQL] 数据过滤

组合WHERE子句来实现功能更强的数据过滤 AND操作符 SELECT 列名1, 列名2, 列名3 FROM 表名 WHERE 条件1 AND 条件2; AND在WHERE子句中指示检索满足所有给定的条件的行 OR操作符 SELECT 列名1, 列名2, 列名3 FROM 表名 WHERE 条件1 OR 条件2; OR在WHERE子句中指示检索匹配任一给定条件的行 计算次序 WHERE可能包含任意数目的AND和OR操作符.在处理OR操作符前,优先处理AND操作符.也可以使用圆括号来明确地分组相应

&lt;&lt;ABP框架&gt;&gt; 数据过滤

文档目录 本节内容: 简介 预定义过滤 ISoftDelete 何时可用? IMustHaveTenant 何时可用? IMayHaveTenant 何时可用? 禁用过滤 关于using声明 关于多租户 启用过滤 设置过滤参数 SetTenantId 方法 自定义过滤 EntityFramework.DynamicFilters 文档 其它 ORM 简介 通常都会用到软删除模式(不把一个实体从数据库中删除,只是给它做个标志“deleted“),如果一个实体被软删除,它不应被应用意外地获取,为了提

PHP简单的数据过滤

2.PHP简单的数据过滤 1)入库:  trim($str),addslashes($str)2)出库:  stripslashes($str)3)显示:  htmlspecialchars(nl2br($str))

利用bloom filter算法处理大规模数据过滤

Bloom Filter是由Bloom在1970年提出的一种快速查找算法,通过多个hash算法来共同判断某个元素是否在某个集合内.可以用于网络爬虫的url重复过滤.垃圾邮件的过滤等等. 它相比hash容器的一个优势就是,不需要存储元素的实际数据到容器中去来一个个的比较是否存在. 只需要对应的位段来标记是否存在就行了,所以想当节省内存,特别适合海量的数据处理.并且由于省去了存储元素和比较操作,所以性能也比基于hash容器的高了很多. 但是由于bloom filter没有去比较元素,只通过多个has