django rest framework 前后端分离 做字段过滤功能的实现

  1. DjangoFilterBackend过滤器

安装

pip install django-filter
2.安装到app

INSTALLED_APPS = [
‘django_filters’,
]
class WithDrawViewset(mixins.RetrieveModelMixin, mixins.CreateModelMixin, mixins.DestroyModelMixin, mixins.ListModelMixin,
viewsets.GenericViewSet):
permission_classes = (IsAuthenticated, IsOwnerOrReadOnly)
authentication_classes = (JSONWebTokenAuthentication, SessionAuthentication)
serializer_class = WithDrawSerializer

'状态,时间范围,金额范围'
filter_backends = (DjangoFilterBackend,)
filter_class = OrdersFilter # 自定义过滤器

3 OrdersFilter
from django_filters import rest_framework as filters
from .models import OrderInfo

class OrdersFilter(filters.FilterSet):
min_price = filters.NumberFilter(field_name=‘total_amount’, lookup_expr=‘gte’)
max_price = filters.NumberFilter(field_name=“total_amount”, lookup_expr=‘lte’, help_text=“最大金额”)
pay_status = filters.CharFilter(field_name=‘pay_status’, lookup_expr=‘icontains’)
order_no = filters.CharFilter(field_name=“order_no”, help_text=“订单名称模糊查询”)
user_msg = filters.CharFilter(field_name=“user_msg”, lookup_expr=‘icontains’)
min_time = filters.DateTimeFilter(field_name=‘add_time’, lookup_expr=‘gte’)
max_time = filters.DateTimeFilter(field_name=‘add_time’, lookup_expr=‘lte’)

class Meta:
    model = OrderInfo
    fields = ['min_price', 'max_price', 'order_no', 'min_time', 'max_time', 'user_msg']

注意 field_name 字段名
效果
在这里插入图片描述

原创于:http://www.debug5.com/detail/18/

程序猿的道德修养:
本博客源码Github地址:
https://github.com/whisnos/myblog
(仅供学习使用)请随手给个star,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值