django orm如何作一个优雅一点的filter?

简介: 如果有N多fitler条件, 单独放在一个长语句里显然不好看。 还好, django支持字典方式的过滤条件, 写法大约与单独的长语里差不多。 如下: def get_queryset(self): filter_dict = dict() if self.

如果有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)

 

目录
相关文章
|
8月前
|
存储 关系型数据库 数据库
Django创建应用、ORM的进阶使用及模型类数据库迁移1
Django创建应用、ORM的进阶使用及模型类数据库迁移1
74 0
|
7月前
|
SQL 关系型数据库 MySQL
Django入门ORM(Django操作MySQL) 专题一
Django入门ORM(Django操作MySQL) 专题一
|
8月前
|
存储 数据可视化 数据库
Django创建应用、ORM的进阶使用及模型类数据库迁移3
Django创建应用、ORM的进阶使用及模型类数据库迁移3
52 0
|
8月前
|
关系型数据库 MySQL 数据库
Django创建应用、ORM的进阶使用及模型类数据库迁移2
Django创建应用、ORM的进阶使用及模型类数据库迁移2
49 0
|
6天前
|
Oracle 关系型数据库 MySQL
Django框架ORM操作(二)
Django框架ORM操作(二)
|
6天前
|
SQL 存储 前端开发
Django框架ORM操作(一)
Django框架ORM操作(一)
Django框架ORM操作(一)
|
10天前
|
SQL 缓存 数据库
在Python Web开发过程中:数据库与缓存,如何使用ORM(例如Django ORM)执行查询并优化查询性能?
在Python Web开发中,使用ORM如Django ORM能简化数据库操作。为了优化查询性能,可以:选择合适索引,避免N+1查询(利用`select_related`和`prefetch_related`),批量读取数据(`iterator()`),使用缓存,分页查询,适时使用原生SQL,优化数据库配置,定期优化数据库并监控性能。这些策略能提升响应速度和用户体验。
10 0
|
5月前
|
SQL 数据库 开发者
Python Web 开发: 什么是 Django ORM?如何使用它进行数据库操作?
Python Web 开发: 什么是 Django ORM?如何使用它进行数据库操作?
|
19天前
|
SQL 缓存 数据库
Django ORM的性能优化:高效处理大量数据
【4月更文挑战第15天】本文介绍了优化Django ORM性能的六大技巧:1) 使用批量操作如bulk_create和bulk_update;2) 利用prefetch_related和select_related减少查询次数;3) 为常用字段添加索引;4) 优化数据库查询,避免循环查询;5) 使用缓存提升频繁查询性能;6) 在必要时使用原生SQL。这些策略能帮助处理大量数据时提升Django ORM的效率。
|
19天前
|
SQL 自然语言处理 数据库连接
Django ORM的魔力:简化数据库操作与迁移
【4月更文挑战第15天】Django ORM是Django框架的关键部分,提供了一种高级的面向对象方式与数据库交互,简化了手动SQL操作。通过定义Python数据模型,开发者能轻松创建数据库表结构,使用ORM执行查询、添加、修改和删除数据。Django ORM还自动化处理数据库连接、事务和数据类型转换。当模型变化时,Django的迁移工具帮助管理数据库结构的更新。通过这种方式,Django ORM促进了高效、专注于业务逻辑的Web开发。