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)

 

时间: 2024-08-04 11:48:39

django orm如何作一个优雅一点的filter?的相关文章

Django ORM模型:想说爱你不容易

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载.   使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational mapping)模型.这个ORM模型的设计比较简单,学起来不会特别花时间.不过,Django的ORM模型有自己的一套语法,有时候会觉得别扭.这里聊一下我自己的体会.   模型设计 这一部分算处理得比较好的部分.Django的数据模型的建立过程很简单,就是继承django.db.models中的Mod

作一个可以直接和浏览器进行交互的组件

交互|浏览器 [豆腐] 于 2000-11-9 9:49:22 加贴在 Joy ASP ↑:</P><P>作一个可以直接和浏览器进行交互的组件/*****豆腐制作 都是精品http://www.asp888.net 豆腐技术站如转载 请 注明出处*/</P><P>我们一般在作组件的时候,一般都是在 asp 中首先获取 数据,然后传送到组件,经过组件处理,再传回浏览器,但是有的时候,这样做似乎 有困难,或者不方便,所以今天豆腐就在这里给大家讲一下如何 作一个可

Photoshop设计一个优雅的网站首页

  简洁优雅,这是一个面向新手的基础网页设计教程,还未设计过网页的你,不妨马上开始,尝试设计自己的第一个网页吧.熟练的同学也可以快速过一遍练练手. 这就是原教程最终设计好的网页. 然后,我在跟着做的时候,将所有文字换成了中文,就成了下面这样,看上去好像是真有这么一回事的感觉~ 哈,大家也可以试试哦,下面是教程: 本教程将通过一个"感恩日志"的概念项目,带大家一步步设计一个优雅(高大上)的网站首页.手把手从零开始,只需装好Photoshop软件就可以了.一些设计时会用到的基础技术(插件.

请教一个问题,获取到一个DataSet,使用Filter过滤其中的数据

问题描述 获取到一个DataSet,使用Filter过滤其中的数据,但是Filter中有单引号,结果我下面的语句就不能调试通过,请大家帮忙解决.stringfilter=string.Format("Label='{0}'",positionName);DataRow[]rows=DataSet1.Select(filter); 解决方案 解决方案二:DataSet不知道怎么过滤的:DataTable过滤可以这样写:DataRow[]rows=DataTable1.Select(&qu

DJANGO和UIKIT结合,作一个有进度条的无刷新上传功能

以前作的上传,在糙了,所以在用户体验上改进一下. 同时,结合DJANGO作定位上传. 这其中分两步进行,第一次上传到TMP目录下, 第二次,将TMP下的文件转移到标准目录下. form.py file_path = forms.CharField( required=True, label=u"上传文件", widget=forms.TextInput( attrs={ 'rows': 2, 'class': 'uk-width-1-2', } ), ) upload.html {#

【转】建立一个更高级别的查询 API:正确使用Django ORM 的方式

这个就比较深入啦... http://www.oschina.net/translate/higher-level-query-api-django-orm 结论: 在视图和其他高级应用中使用源生的ORM查询代码不是很好的主意.而是用django-model-utils中的PassThroughManager将我们新加的自定义QuerySet API加进你的模型中,这能给你以下好处:     啰嗦代码少,并且更健壮.     增加DRY,增强抽象级别.     将所属的业务逻辑推送至对应的域模型

PS网页设计教程XIX——在Photoshop中创建一个优雅的作品集的网页布局

作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,"熟读唐诗三百首,不会作诗也会吟". 本系列的教程来源于网上的PS教程,都是国外的,全英文的.本人尝试翻译这些优秀的教程.因为翻译能力有限,翻译的细节上还有待推敲,希望广大网友不吝赐教. 约定: 1.本文的软件是Photoshop CS5版本 2.原教程的截图是英文的,本人在重新制作的基础上,重新截了中文版的图 3.原文中有些操作没有给出参数.本人在反复测试的情况下测定了一些参数,以红色的

这篇 感觉很实用--DJANGO ORM

Django之model F/Q以及多对多操作 http://www.cnblogs.com/ccorz/p/5882400.html model之F/Q操作 F操作,使用查询条件的值 打个比方吧,有一张表,保存着公司员工的工资,公司普涨工资,如何在model中操作,这就用到了F,首先需要导入此模块: from django.db.models import F 操作: models.UserInfo.objects.filter().update(salary=F('salary')+500)

用Swing作一个日历控制程序

程序|控制|日历 日期是最基本的数据形式之一,因此很多语言或者数据库都提供了对日期的支持,或内置或提供这一类的库.Java也不例外:Java的应用编程接口提供了以跨平台独立语言的方式描述,计算,对比,显示以及便携式分析日期.在这篇文章里,我要讲讲关于Swing的自定义控制,允许你在视觉上获取时间信息而不是用敲命令的方式.用这种方法,你可以避免无效的时间信息,让你的使用者以视觉的方式得到享受.Java中的日期Java描述日期和时间的方法使用传统的Date命令或者Java的一些子库.不管它的名字是什