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数组条件过滤filter函数使用示例
Jul 22 Python
python列出目录下指定文件与子目录的方法
Jul 03 Python
Python生成数字图片代码分享
Oct 31 Python
解决pip install的时候报错timed out的问题
Jun 12 Python
详解python运行三种方式
May 13 Python
详解如何设置Python环境变量?
May 13 Python
Python正则表达式匹配数字和小数的方法
Jul 03 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
TensorFlow保存TensorBoard图像操作
Jun 23 Python
python如何求圆的面积
Jul 01 Python
如何解决安装python3.6.1失败
Jul 01 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后台多用户权限组思路与实现程序代码分享
2012/02/13 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
php中并发读写文件冲突的解决方案
2013/10/25 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
Yii核心验证器api详解
2016/11/23 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
Python脚本实现代码行数统计代码分享
2015/03/10 Python
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
心理健康教育心得体会
2013/12/29 职场文书
爱心活动计划书
2014/04/26 职场文书
有关环保的标语
2014/06/13 职场文书
产品质量保证书范本
2015/02/27 职场文书
Python基础之函数嵌套知识总结
2021/05/23 Python