django restframework使用filter_backends

1.方法1

from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import OrderingFilter
from rest_framework.response import Response
from bffile_data import models
from bffile_data.serializers import File_versionSerializers
from rest_framework.generics import GenericAPIView
from rest_framework import mixins
class History_file_dates(GenericAPIView, mixins.ListModelMixin):
    queryset = models.File_version.objects.filter(is_delete='0')
    serializer_class = File_versionSerializers
    filter_backends = [DjangoFilterBackend, OrderingFilter]
    filter_fields = ["file_info_id"]
    ordering = ["-file_version"] #代表从大到小

    def get(self, request):
        serializer_datas = self.serializer_class(self.filter_queryset(self.get_queryset()), many=True).data
        result = ts.result_data(status.HTTP_200_OK, serializer_datas, "查询成功")
        return Response(result)

2.方法2
views文件

from rest_framework import mixins, status
from bffile_data.serializers import Person_permissionSerializers, Person_permissionFilter
from bffile_data import models
from django.db.models import Q
from rest_framework.views import APIView
from bfresource_platform import settings as config
from bffile_data import tools as ts
from rest_framework.generics import GenericAPIView
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import OrderingFilter
from rest_framework.response import Response
class Projects_dates(GenericAPIView, mixins.ListModelMixin):
    queryset = models.Person_permission.objects.all()
    serializer_class = Person_permissionSerializers
    filter_backends = [DjangoFilterBackend, OrderingFilter]
    filter_class = Person_permissionFilter
    ordering = ["-permission_id"]

    def get(self, request):
        query_set = self.filter_queryset(self.get_queryset())
        serializer_datas = self.serializer_class(instance=query_set.distinct(), many=True).data
        result = ts.result_data(status.HTTP_200_OK, serializer_datas, "查询成功")
        return Response(result)

serializers文件

from rest_framework import serializers

class Person_permissionSerializers(serializers.ModelSerializer):
    project_name = serializers.SerializerMethodField()
    project_id = serializers.SerializerMethodField()

    def get_project_name(self, obj):
        return obj.file_info_id.file_name if obj.file_info_id else None

    def get_project_id(self, obj):
        return obj.file_info_id.file_id if obj.file_info_id else None

    class Meta:
        model = Person_permission
        fields = ["project_id","project_name"]

class Person_permissionFilter(django_filters.rest_framework.FilterSet):
    project_name = django_filters.CharFilter('file_info_id__file_name',lookup_expr='icontains')#模糊搜索
    user_id = django_filters.CharFilter('person_id')

    class Meta:
        model = Person_permission
        fields = ['user_id','project_name']```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值