码迷,mamicode.com
首页 > 其他好文 > 详细

DRF的过滤

时间:2019-04-06 17:06:52      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:order   等于   paginati   price   默认   install   field   必须   generic   

一、添加到app里面

INSTALLED_APPS = [
     django_filters,
]

二、新建filter.py

# goods/filters.py

import django_filters

from .models import Goods


class GoodsFilter(django_filters.rest_framework.FilterSet):
    ‘‘‘
    商品过滤的类
    ‘‘‘
    #两个参数,name是要过滤的字段,lookup是执行的行为,‘小与等于本店价格’
    price_min = django_filters.NumberFilter(name="shop_price", lookup_expr=gte)
    price_max = django_filters.NumberFilter(name="shop_price", lookup_expr=lte)

    class Meta:
        model = Goods
        fields = [price_min, price_max]

三、views.py

from .filters import GoodsFilter
from django_filters.rest_framework import DjangoFilterBackend

class GoodsListViewSet(mixins.ListModelMixin,viewsets.GenericViewSet):
    商品列表页

    #这里必须要定义一个默认的排序,否则会报错
    queryset = Goods.objects.all().order_by(id)
    # 分页
    pagination_class = GoodsPagination
    serializer_class = GoodsSerializer
    filter_backends = (DjangoFilterBackend,)

    # 设置filter的类为我们自定义的类
    filter_class = GoodsFilter

技术图片

DRF的过滤

标签:order   等于   paginati   price   默认   install   field   必须   generic   

原文地址:https://www.cnblogs.com/mxsf/p/10661938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!