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入门篇之正则表达式
Oct 20 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
Python格式化输出%s和%d
May 07 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
pyqt5 获取显示器的分辨率的方法
Jun 18 Python
Python 的AES加密与解密实现
Jul 09 Python
PYTHON发送邮件YAGMAIL的简单实现解析
Oct 28 Python
Python numpy线性代数用法实例解析
Nov 15 Python
Python实现把类当做字典来访问
Dec 16 Python
pytorch 常用线性函数详解
Jan 15 Python
Python标准库itertools的使用方法
Jan 17 Python
详解Pytorch显存动态分配规律探索
Nov 17 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中慎用双等于(==)的详解
2013/06/06 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
2014/10/17 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
php实现的http请求封装示例
2016/11/08 PHP
Yii2单元测试用法示例
2016/11/12 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
清除输入框内的空格
2016/12/21 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
微信小程序中setInterval的使用方法
2017/09/29 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
在Django中使用Sitemap的方法讲解
2015/07/22 Python
Python开发的HTTP库requests详解
2017/08/29 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
J2EE是技术还是平台还是框架
2016/08/14 面试题
职业技术学校毕业生推荐信
2013/12/03 职场文书
安全口号大全
2014/06/21 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
创先争优承诺书
2015/01/20 职场文书
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python
Python必备技巧之字符数据操作详解
2022/03/23 Python
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS