1.在utils文件夹中创建filters.py 文件,内容如下
from django_filters.rest_framework.filterset import FilterSet
from api import models
from django_filters import filters
class ModuleFilterSet(FilterSet):
moduleName = filters.CharFilter(field_name='moduleName', lookup_expr="icontains")
projectName = filters.CharFilter(field_name='project__projectName', lookup_expr="icontains")
project = filters.CharFilter(field_name='project', lookup_expr="exact")
class Meta:
model = models.Module
fields = ['moduleName', 'projectName', 'project']
2.在views文件中
from django_filters.rest_framework import DjangoFilterBackend from utils.filters import ModuleFilterSet
class ModuleView(mixins.ListModelMixin, mixins.CreateModelMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin,
GenericViewSet):
queryset = models.Module.objects.filter(is_delete=False)
serializer_class = serializers.ModuleSerializer
pagination_class = MyPageNumberPagination
filter_backends = [DjangoFilterBackend] #重点
filter_class = ModuleFilterSet #这个就是上面截图定义的查询规则