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备份文件的脚本
Aug 11 Python
简单使用Python自动生成文章
Dec 25 Python
Python的爬虫程序编写框架Scrapy入门学习教程
Jul 02 Python
Python实现的堆排序算法原理与用法实例分析
Nov 22 Python
Python设计模式之工厂模式简单示例
Jan 09 Python
Python中一些不为人知的基础技巧总结
May 19 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
使用python的turtle绘画滑稽脸实例
Nov 21 Python
numpy:找到指定元素的索引示例
Nov 26 Python
python 用 xlwings 库 生成图表的操作方法
Dec 22 Python
jupyter notebook 增加kernel教程
Apr 10 Python
Opencv 图片的OCR识别的实战示例
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+html5基于websocket实现聊天室的方法
2015/07/17 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
ionic3 懒加载
2017/08/16 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
Python3基础之输入和输出实例分析
2014/08/18 Python
Python素数检测实例分析
2015/06/15 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
Django多数据库的实现过程详解
2019/08/01 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
python实现图片横向和纵向拼接
2020/03/05 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
《巨人的花园》教学反思
2014/02/12 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
员工福利申请报告
2015/05/15 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js