django orm如何作一个优雅一点的filter?
如果有N多fitler条件,
单独放在一个长语句里显然不好看。
还好,
django支持字典方式的过滤条件,
写法大约与单独的长语里差不多。
如下:
def get_queryset(self):
filter_dict = dict()
if self.request.query_params.get('site_name'):
filter_dict['site_name__name'] = self.request.query_params.get('site_name')
if self.request.query_params.get('order_no'):
filter_dict['order_no'] = self.request.query_params.get('order_no')
if self.request.query_params.get('version_name'):
if self.request.query_params.get('version_name') == "null":
filter_dict['version_name__isnull'] = True
else:
filter_dict['version_name__name'] = self.request.query_params.get('version_name')
# 以下过滤发布单的环境及时间(30天)
# filter_dict['deploy_progress'] = u"待发布"
filter_dict['deploy_status__in'] = ["UAT", "PRD", "SIM", "DRP", "BUILD"]
current_date = timezone.now()
filter_dict['change_date__gt'] = current_date - timedelta(days=3000)
return DeployPool.objects.filter(**filter_dict)
django orm如何作一个优雅一点的filter?的更多相关文章
- Django ORM模型的一点体会
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational ma ...
- 建立一个更高级别的查询 API:正确使用Django ORM 的方式(转)
add by zhj: 本文作者是DabApps公司的技术主管,作者认为在view中直接使用Django提供的ORM查询方法是不好的,我对此并不赞同,可能作者 写这篇文章是给Django的初学者看,所 ...
- 作DJANGO ORM时的一些最佳实践
还是国外的正规,都在作DJANGO ORM的解藕化工作了. 外键不用,多对多,一对多,不用. 参考URL: http://scottlobdell.me/2015/01/sql-database-be ...
- django ORM的总结
1.django分表的方案: https://mp.weixin.qq.com/s?__biz=MjM5NjA3Nzk3Ng==&mid=2648154502&idx=1& ...
- django -orm操作总结
前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MyS ...
- django orm 及常用参数
一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. ...
- Django ORM中常用字段和参数
一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. ...
- Django ORM模型:想说爱你不容易
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational ma ...
- 9.14.16 Django ORM进阶用法
2018-9-14 14:26:45 ORM 练习题 : http://www.cnblogs.com/liwenzhou/articles/8337352.html 2018-9-14 21:1 ...
随机推荐
- Codeforces Round #271 (Div. 2) D 简单dp
D. Flowers time limit per test 1.5 seconds memory limit per test 256 megabytes input standard input ...
- react native 热更新
一.安装codepush服务 npm install code-push-cli -gcode-push -v 二.创建codepush账号 code-push registercode-push l ...
- vue添加属性绑定
html <div id="app-2"> <span v-bind:title="message"> 鼠标悬停几秒钟查看此处动态绑定的 ...
- VC++的debug与release版本
因为在Debug中有ASSERT断言保护,所以要崩溃,而在Release优化中就会删掉ASSERT,所以会出现正常运行. void func() { char b[2]={0}; strc ...
- redis 字符串的管理的一点理解
redis字符串可以实现通过地址偏移找到所在结构体的首地址,struct sdshdr *sh = (void *)(s - (sizeof(struct sdshdr))) 也就是通过buf地址可以 ...
- 【题解】Inspection UVa 1440 LA 4597 NEERC 2009
题目传送门:https://vjudge.net/problem/UVA-1440 看上去很像DAG的最小路径覆盖QwQ? 反正我是写了一个上下界网络流,建模方法清晰易懂. 建立源$s$,向每个原图中 ...
- mobiscroll 案例git
https://github.com/zhoushengmufc/iosselect
- mysql数据库使用sql命令窗口查询的数据,改成sql语句导入到mysql数据库中
1.查询语句为select * from t_table;导出的数据格式如下: 2.将数据文本备份,然后使用NOTEPAD++打开,然后只拷贝数据到新建txt中,然后进行如下替换: 1)将“ | ”分 ...
- Arrays.asList方法遇到的问题
在使用Arrays.asList(T...a)方法时,遇到了 java.lang.UnsupportedOperationException 异常. 后来发现,该方法返回的类型是Arrays$Arr ...
- Python学习笔记(十五)用Python获取本地数据
f1 = open(r'E:\Python\Data\data1.txt') #读取data1.txt文件,使用系统默认缓冲区大小, 为了读取快点,使用缓存吧! f = open(r'E:\Pytho ...