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实现的批量下载RFC文档
Mar 10 Python
在Python中操作字典之fromkeys()方法的使用
May 21 Python
python简单实现获取当前时间
Aug 27 Python
python3监控CentOS磁盘空间脚本
Jun 21 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
python tornado微信开发入门代码
Aug 24 Python
python实现多张图片拼接成大图
Jan 15 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
django框架模型层功能、组成与用法分析
Jul 30 Python
Python通过zookeeper实现分布式服务代码解析
Jul 22 Python
关于python3.9安装wordcloud出错的问题及解决办法
Nov 02 Python
PyCharm 光标变成黑块的解决方式
Feb 06 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
PHP中Date获取时间不正确怎么办
2008/06/05 PHP
PHP中使用curl入门教程
2015/07/02 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
安装vue-cli的简易过程
2018/05/22 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
Django中Forms的使用代码解析
2018/02/10 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
python 二维数组90度旋转的方法
2019/01/28 Python
HTML的form表单和django的form表单
2019/07/25 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
Python命令行click参数用法解析
2019/12/19 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
同程旅游英文网站:LY.com
2018/11/13 全球购物
武汉世纪畅想数字传播有限公司 .NET笔试题
2015/06/13 面试题
一封普通求职者的求职信
2013/11/20 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
幼儿园校车安全责任书
2015/05/08 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
mysql函数之截取字符串的实现
2022/08/14 MySQL