• 分页 restframe work 排序,分页,自定义过滤


    from rest_framework.viewsets import ModelViewSet
    from  .serializers import SerializerStudent
    from rest_framework.response import Response
    from django.http import Http404
    from django_filters.rest_framework import DjangoFilterBackend
    from django_filters.rest_framework import FilterSet
    from django_filters import rest_framework
    from rest_framework.filters import SearchFilter,OrderingFilter
    from . models import Student
    from rest_framework.pagination import PageNumberPagination
    
    class MyPagiNation(PageNumberPagination):
        """ 局部分页类"""
        page_size_query_param = "page_size"
        max_page_size = 3
    
    class MyFilter(FilterSet):
        """自定义过滤规则类"""
        class_id=rest_framework.NumberFilter(field_name="class_id",lookup_expr="exact")
        name=rest_framework.CharFilter(field_name="name",lookup_expr="icontains")
    
        class Meta:
            model=Student
            fields=("id","class_id","name")
    
    
    
    class StudentModelView(ModelViewSet):
        queryset = Student.objects.filter(is_delete=False).all()
        serializer_class = SerializerStudent
        def destroy(self, request, *args, **kwargs):
            try:
                instance = self.get_object()
                instance.is_delete = True
                instance.save()
                serializer=self.get_serializer(instance=instance)
                data= True if serializer.data.get("is_delete") else False
                return Response(data=data)
            except  Http404:
                return Response(data=False)
    
        filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
        #自定义过滤rule
        filter_class =MyFilter
        # 如果要允许对某些字段进行过滤,可以使用filter_fields属性
        #filter_fields=()
        # 搜索过滤
        search_fields = ('name')
        # 排序
        ordering_fields =["-class_id"]
        # 分页类
        pagination_class = MyPagiNation
    

     

    修改settings.py 配置过滤器:

    REST_FRAMEWORK={
    
        'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend',],
    
    }
    

      

  • 相关阅读:
    Python 安装、循环语句、数据类型(一)
    Python 字符、整型、列表字典等操作(二)
    JAVA实现文章的上一篇下一篇
    什么是公钥、私钥、密码、助记词
    XSS跨站网络攻击
    区块链相关知识
    冷钱包
    .NET 后台提交POST请求
    邮件的发送
    数据库中字段类型对应的C#中的数据类型
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/13874344.html
Copyright © 2020-2023  润新知