Django-Filter:构建强大的过滤器系统,让数据查询更智能
from django_filters import rest_framework as filters
from .models import MyModel
class MyModelFilter(filters.FilterSet):
# 为MyModel的字段custom_field创建一个过滤器
custom_field = filters.CharFilter(field_name='custom_field', lookup_expr='icontains')
class Meta:
model = MyModel
fields = ['custom_field']
# 在视图中使用MyModelFilter
from rest_framework.generics import ListAPIView
from .serializers import MyModelSerializer
class MyModelListView(ListAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
filter_backends = [filters.DjangoFilterBackend]
filter_class = MyModelFilter
这段代码定义了一个Django REST framework视图,它使用MyModelFilter
来过滤MyModel
实例。MyModelFilter
有一个字符串过滤器custom_field
,它允许根据custom_field
字段的内容对查询结果进行过滤,并且不区分大小写。在视图中,我们指定了要使用的过滤器后端filters.DjangoFilterBackend
,并将过滤器类filter_class
设置为我们刚刚定义的MyModelFilter
。这样,就可以通过URL查询参数来过滤查询集了。
评论已关闭