浅谈Django的Q查询以及AngularJS的Datatables分页插件
使用Q查询,首先要导入Q模块:
from django.db.models import Q
可以组合使用&,|操作符用于多个Q的对象,产生一个新的Q对象,Q对象也可以用~操作符放在前面表示否定,如下例所示:
if search:
keywords_list = search.split(' ')
query_list = [Q(status__icontains=get_success_fail_status(keyword)) if get_success_fail_keyword_status(keyword) else
Q(username__icontains=keyword) |
Q(groupid__icontains=keyword) |
Q(status_active_vs__icontains=keyword) |
Q(orders_created_time__icontains=keyword) |
Q(status_bind__icontains=keyword) |
Q(status_active_Bind__icontains=keyword) |
Q(env__icontains=keyword) for keyword in keywords_list]
q = Q()
for query in query_list:
q.add(query, Q.AND) #把query添加到之前定义的最外层的Q对象中,查询条件是 '和'
Q(username__icontains=keyword) | Q(groupid__icontains=keyword) 表示查询 username或者 groupid
再谈谈AngularJS的Datatables分页插件:
Datatables的主要功能是分页、即时搜索和排序,虽然django自带的模板引擎也有分页功能(Paginator),但无论从功能上还是美观上,Datatables都更好。


DTOptionsBuilder.newOptions()
.withOption('ajax', {
url: "/api/other/get_http_https_apply/",
type: 'GET'
})
.withDataProp('data')
.withOption('serverSide', true)
.withPaginationType('full_numbers')
.withOption('createdRow', createdRow)
.withOption('order', [
[0, 'desc']
]);
'serverSide', true 表示开启服务器模式,
ajax表示数据的来源(包括处理分页,排序,过滤),
full_numbers表示所有的数据,
http_https.dtColumns = [
DTColumnBuilder.newColumn('id').withTitle('ID'),
DTColumnBuilder.newColumn('username').withTitle('申请人'),
DTColumnBuilder.newColumn('env').withTitle('环境'),
DTColumnBuilder.newColumn('groupid').withTitle('group_id'),
DTColumnBuilder.newColumn('status_active_vs').withTitle('激活vs').renderWith(apply_status),
DTColumnBuilder.newColumn('status_bind').withTitle('绑定').renderWith(apply_status),
DTColumnBuilder.newColumn('status_active_Bind').withTitle('激活绑定').renderWith(apply_status),
DTColumnBuilder.newColumn('status').withTitle('最终结果').renderWith(apply_status),
DTColumnBuilder.newColumn('orders_created_time').withTitle('时间')
];
//判断是否是admin用户,如果是admin,则在http_https.dtColumns这个数组中增加(push)一个元素
if (http_https.js_admin) {
http_https.dtColumns.push(DTColumnBuilder.newColumn(null).renderWith(actionsHtml).withTitle('Actions'))
}
DTColumnBuilder.newColumn表示新增表格的列
.renderWith对数据进行渲染 这里apply_status是我自己写的一个函数,用于转换json中True和False对应的html中的“成功、失败”
部分详情代码请见我的github:https://github.com/a342058040/Django_AngularJS_Datatables.git
浅谈Django的Q查询以及AngularJS的Datatables分页插件的更多相关文章
- 浅谈Angular的 $q, defer, promise
浅谈Angular的 $q, defer, promise 时间 2016-01-13 00:28:00 博客园-原创精华区 原文 http://www.cnblogs.com/big-snow/ ...
- 浅谈Django的中间件与Python的装饰器
浅谈Django的中间件 与Python的装饰器 一.原理 1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该 ...
- Django中Q查询及Q()对象
问题 一般我们在Django程序中查询数据库操作都是在QuerySet里进行进行,例如下面代码: >>> q1 = Entry.objects.filter(headline__st ...
- Django orm Q查询补充
Q的简单用法 from django.db.models import Q q = Q() q.children.append(("username", "lyj&quo ...
- 浅谈Excel开发:十一 针对64位Excel的插件的开发和部署
自Office 2010版本开始有了32位和64位之分,对Excel来说,32位的Excel和64位的Excel在性能上的主要区别是64位的Excel能够处理2G及2G以上的大数据集. 随着64位操作 ...
- 浅谈 django Models中的跨表
跨表操作在数据库操作非常常用,虽然其会降低读取数据的性能,但是它能节约数据在硬盘中的占用,优化数据表的结构和各自之间的关系. 在sql中,一般跨表需要用到 join 关键字 select * from ...
- 浅谈Django的生命周期和CBF和FBC
Django的生命周期和CBF和FBC 对于所有的web框架来说本质就是一个socket服务端,浏览器是socket客户端,客户端和服务端通信,字符串(Http协议):请求头和请求体 响应头+响应体 ...
- 浅谈Redis之慢查询日志
首先我们需要知道redis的慢查询日志有什么用?日常在使用redis的时候为什么要用慢查询日志? 第一个问题: 慢查询日志是为了记录执行时间超过给定时长的redis命令请求 第二个问题: 让使用者更好 ...
- 企业应用:浅谈 “数据权限” 和 查询 API 设计
背景 多数企业应用都需要对数据权限进行控制,如:某个用户只能看到某个范围的数据(数据行).某个用户只能看到某几列数据(数据列).本文以数据行级别的权限控制为范例,谈谈如何设计权限模型和查询 API. ...
随机推荐
- avi格式详细介绍
百度:http://wenku.baidu.com/link?url=KB7qKc6UG4aeU-i9FtXeV8Uou4JHPceiyz3HNbzCrQw4phY-qRlcp3tTSwYPeIgdx ...
- Camera服务之--架构浅析
Camera服务之--架构浅析 分类: Camera 分析2011-12-22 11:17 7685人阅读 评论(3) 收藏 举报 android硬件驱动框架jnilinux内核平台 一.应用层 Ca ...
- R语言相关工具
R: 下载 R语言的基础工具,包括R编译器,R控制台等 RStudio:下载 R程序集成开发环境.特别好用,包括一系列的集成工具. Rtools:下载 Windows环境下,编译R包的工具库.也可以用 ...
- Extjs6中的新特性
Ext JS在Sencha框架中引入了许多新的和令人兴奋的改进.这些变化为基于所有现代浏览器.设备和屏幕尺寸带来了新的功能和可用性. 工具包(ToolKits) Ext JS 6最大的变化就是将Ext ...
- 【HNOI2013】题解 bzoj3139~bzoj3144
比赛 题目: http://www.lydsy.com/JudgeOnline/problem.php?id=3139 题解: 3$\le$N$\le$10,比较明显是一个搜索题,一开始我是直接搜了 ...
- iOS开发——代理与block传值
一.代理传值的方法 1.Hehe1ViewController.h中 #import <UIKit/UIKit.h> @protocol Hehe1ViewControllerDelega ...
- php中设置时区
第一种办法:在php.ini 中设置:date.timezone=Asia/Shanghai(注意不加单引号或双引号) 第二种办法:在程序中ini_set('date.timezone','Asia/ ...
- iOS UICollectionView 长按移动cell
ref:http://www.jianshu.com/p/31d07bf32d62 iOS 9之后: 示例如下 效果 前言: 看完你可以学到哪些呢? 就是文章标题那么多, 只有那么多. . 手残效果图 ...
- 74HC166与TPIC6A595分析(转)
源:Atmega162串行外设接口SPI 一.Atmega162的SPI接口基本概念与工作原理 SPI接口的全称是"Serial Peripheral Interface",意为串 ...
- js prototype 和constructor
1.function 和object 都有 constructor 和prototype 2. var a=new Animal() (animal 是function或Object) a 有 con ...