首页 > 其他分享 >排序组件的使用

排序组件的使用

时间:2022-12-10 11:33:51浏览次数:46  
标签:ordering rest framework 使用 组件 import 排序 id

排序

在类视图中设置filter_backends 属性,使用rest_framework.filters.OrderingFilter过滤器,DRF会在请求的查询字符串参数中检查是否包含了ordering参数,如果包含了ordering参数,则按照ordering参数指明的排序字段对数据集进行排序后展示。

from rest_framework.generics import ListAPIView
from rest_framework.filters import OrderingFilter
from app01.models import Book
from app01.serializer import BookSerializer


# # 排序组件使用
class Book2View(ListAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    filter_backends = [OrderingFilter]  
    ordering_fields = ('id' ,'price',) # # 指明按照'id'和'price'字段的值的大小对数据进行排序后展示
    
    
#urls.py
path('books2/', views.Book2View.as_view()),

#必须是ordering = 某个值
#http://127.0.0.1:8000/books2/?ordering=price
# 127.0.0.1:8000/books2/?ordering=-id
# -id 表示针对id字段进行倒序排序
# id  表示针对id字段进行升序排序

image-20221210105958743

根据id降序排序

image-20221210110027126

如果需要过滤后在排序,则选哟过滤和排序两者结合使用

from rest_framework.generics import ListAPIView
from rest_framework.filters import OrderingFilter
from django_filters.rest_framework import DjangoFilterBackend
from app01.models import Book
from app01.serializer import BookSerializer

#views.py
class Book3View(ListAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    # 因为'filter_backends'是局部过滤配置,局部配置会覆盖'settinigs.py'文件中的全局配置,所以需要再次声明过滤组件核心类'DjangoFilterBackend',否则过滤功能会失效
    filter_backends = [DjangoFilterBackend, OrderingFilter]  # 在视图中加上该类,就可以
    filterset_fields = ('name', 'price')
    ordering_fields = ('id', 'price',)
    
    
#urls.py
path('books3/', views.Book3View.as_view()),


#http://127.0.0.1:8000/books3/?price=66&ordering=-id
#先过滤出价格为66的,再根据id字段降序排序

image-20221210111252689

标签:ordering,rest,framework,使用,组件,import,排序,id
From: https://www.cnblogs.com/zaosong/p/16971303.html

相关文章

  • 方法引用基础使用
    packagecom.Lucky.Function;importjava.util.Arrays;importjava.util.Comparator;importjava.util.stream.Collector;/*方法引用:将已经存在的方法进行引用......
  • Velero 系列文章(二):使用 Helm 安装 Velero
    概述本文是通过Helm3来安装Velero,只做最基本的安装。并计划将YAML(只备份YAML,不备份Volume)备份到腾讯云的COS(兼容S3,所以可以通过AWSS3插件来实现)需要......
  • PostgreSQL 使用数组类型及mybatis操作数组类型
    为啥要用到数组类型呢?因为​​ES支持数组类型​​,为了迁移遍历,所以也支持数组类型。selectdocid,authorsfromsearch_doc_new_icwhereauthors@>'{"惠普"}'limit1......
  • Stream流之其他使用
    数组:packagecom.Lucky;importjava.util.*;/*数组的Stream流:使用Arrays工具类*/publicclassStreamArray{publicstaticvoidmain(String[]args)......
  • Qt QScroller::grabGesture(ui->scrollArea, QScroller::TouchGesture),之后滚动条无法
    RT。问题发生原因因为设置了touchGesture,而scrollArea的滚动条是包含在scrollArea里面的,用手指滑动滚动条的同时,也触发了touchGesture,两个冲突了。 解决思路:重新n......
  • Stream【数据流】的基本使用
    Stream:数据流中间方法:filter【过滤】limit【获取前几个数据】skip【跳过前几个数据】distinct【去重】concat【合并】map【......
  • 2022 ximalaya download 喜马拉雅音频批量下载器使用教程
    教大家怎么使用ximalayadownload这款软件下载喜马拉雅上的音乐批量下载到自己的电脑上。使用方法很简单,首先下载这款软件。ximalaydownload音乐批量下载器这款软件的强......
  • for循环的使用与学习
    在Linux中使用BashFor循环你会嘛!原创 入门小站 入门小站 2022-12-0921:50 发表于湖北收录于合集#Linux645个入门小站分享运维技巧及10k+Stars的开......
  • Velero 系列文章(二):使用 Helm 安装 Velero
    概述本文是通过Helm3来安装Velero,只做最基本的安装。并计划将YAML(只备份YAML,不备份Volume)备份到腾讯云的COS(兼容S3,所以可以通过AWSS3插件来实现)需......
  • elasticsearch安装和使用
    下载地址:​​https://www.elastic.co/cn/downloads/past-releases#elasticsearch​​   ​​ https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.......