django rest framework 过滤时间操作


Posted in Python onJuly 12, 2020

通常我们会用到过滤两个时间段内的一些数据, 当我们用django rest framework的时候, 他可以根据字段filter_fields进行过滤, 但是对于日期来说并不起作用, 这个时候就需要我们设置重写queryset方法进行捕捉了

重写get_queryset()

def get_queryset(self):
  start = self.request.query_params.get('fault_start_time', None)
  stop = self.request.query_params.get('fault_end_time', None)
  if start and stop:
    return models.ServerFaultRecord.objects.filter(fault_start_time__gte=start).filter(fault_end_time__lte=stop)
  return models.ServerFaultRecord.objects.all()

补充知识:django中时间区间过滤,排序

1.过滤下载

pip install django-filter

2.下载后注册

INSTALLED_APPS=['django_filters',]

3.导入rest_framework

from django_filters import rest_framework

class DoctorsFilter(rest_framework.FilterSet):
  authentication_classes = [TokenAuthentication]
  #开始时间
  start_date = rest_framework.DateFilter(field_name='start_date', lookup_expr='gte')
  #结束时间
  end_date = rest_framework.DateFilter(field_name='end_date', lookup_expr='lte')

4.在类中的使用

from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.viewsets import ModelViewSet
class DoctorsViewSet(ModelViewSet):

   filter_backends = [DjangoFilterBackend]
   #过滤其他的字段
   filter_fields = ('id', 'patient', 'doc_type',)    #指向要过滤的类
   filter_class = DoctorsFilter

2.排序

#1.导入OrderingFilter
from rest_framework.filters import OrderingFilter

#2.在类中的使用
class CarsModelViewSet(ModelViewSet):
  
      queryset =models的类
      serializer_class=序列化组件

 

filter_backends = [OrderingFilter]




#/api/cars/?ordering=-id 倒序
     #/api/cars/?ordering=id 正序
      ordering_fields = ('id', )

以上这篇django rest framework 过滤时间操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 生成目录树及显示文件大小的代码
Jul 23 Python
详解python开发环境搭建
Dec 16 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
May 08 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
Jan 05 Python
python3.6 实现AES加密的示例(pyCryptodome)
Jan 10 Python
Python 反转字符串(reverse)的方法小结
Feb 20 Python
Python 查看list中是否含有某元素的方法
Jun 27 Python
详解python 中in 的 用法
Dec 12 Python
Python selenium的基本使用方法分析
Dec 21 Python
Python底层封装实现方法详解
Jan 22 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
Feb 14 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 #Python
python读取excel进行遍历/xlrd模块操作
Jul 12 #Python
django rest framework 自定义返回方式
Jul 12 #Python
Django+RestFramework API接口及接口文档并返回json数据操作
Jul 12 #Python
Python3交互式shell ipython3安装及使用详解
Jul 11 #Python
Python QTimer实现多线程及QSS应用过程解析
Jul 11 #Python
面向新手解析python Beautiful Soup基本用法
Jul 11 #Python
You might like
PHP 判断常量,变量和函数是否存在
2009/04/26 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
JavaScript 密码强度判断代码
2009/09/05 Javascript
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
javascript的push使用指南
2014/12/05 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
Python实现端口检测的方法
2018/07/24 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
拾金不昧感谢信
2015/01/21 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
2016年世界人口日宣传活动总结
2016/04/05 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
德劲DE1102数字调谐收音机机评
2022/04/07 无线电