一、基本配置:

  1、安装:pip install django-filter

  2、将 django_filters 配置到INSTALLED-APPS中

  3、对 REST_FRAMEWORK 配置:

    REST_FRAMEWORK = {

      "DEFAULT_FILTER_BACKENDS":("django_filters.rest_framework.DjangoFilterBackend",)

    }

二、基本过滤器的使用

  from django_filters.rest_framework.DjangoFilterBackend

  在对应的View中添加配置

  class GoodLists(mixins.ListModelMixin, viewset.GenericViewSet):

    ...

    # 使用过滤器

    filter_backends = (DjangoFilterBackend,)

    # 定义需要过滤的字段

    filter_fields = ("name", "price")

三、自定义过滤器

  1、创建一个filter.py文件

  import django_filters

  from django.db.models import Q

  from .model import Goods

  class GoodsFilter(django_filters.rest_framework.FilterSet):

    pricemin = django_filters.NumberFilter(name = "shop_price", lookup_expr = "gte")

    pricemax = django_fliters.NumberFilter(name = "shop_price", lookup_expr = "lte")

    name = django_filters.CharFilter(name = "name", lookup_expr = "icontains")

    top_category = django_fllters.NumberFilter(name = "category", method = "get_top_category")

    def get_top_category(self, queryset, name, value):

      return queryset.filter(Q(category_id = value) | Q(category_parent_category_id = value))

  

    class Meta:

      model = Goods

      fields = ["pricemin", "pricemax", "name"]

    

  2、在视图中使用自定义过滤器

    from .filter import GoodsFilter

    class GoodLists(mixins.ListModelMixin, viewsets.GenericViewSet):

      ...

      filter_backends = (DjangoFilterBackends, filter.SearchFilter, filter.OrderingFilter)  # SearchFilter:搜索过滤器,OrderingFilter:排序过滤器

      filter_fields = ("name", "shop_price")

      # 自定义过滤器的使用

      filter_class = GoodsFilter

      search_fields = ("name", "good_brief")  # 搜索的内容包含在name中,或者包含在商品描述中

      ordering_fields = ("sold_num", "shop_price") # 排序

Django Restframework 过滤器的更多相关文章

  1. django: rest-framework的 分页和过滤

    django: rest-framework的 分页和过滤 2018年06月28日 10:09:01 weixin_42359464 阅读数:136 标签: flaskrestframeworkdja ...

  2. django restframework serializer 增加自定义字段

    在使用django restframework serializer 序列化在django中定义的model时,有时候我们需要额外在serializer中增加一些model中没有的字段.有两种方法实现 ...

  3. Django自定义过滤器中is_safe和need_autoescape两个参数的理解

    自定义template过滤器的方法参考文档,不再赘述 is_safe 文档说明过滤的两种最终形态,其中一种是设置register.filter(is_safe=True),但是对is_safe的具体作 ...

  4. django restframework

    一.django restframework 请求流程源码剖析 上面的认证一个流程是rest_framework的关于APIauth的认证流程,,这个流程试用权限.频率.版本.认证.这个四个组件都是通 ...

  5. django restframework jwt

    既然要来学习jwt(json web token),那么我们肯定是先要了解jwt的优势以及应用场景--跨域认证. $ pip install djangorestframework-jwt 传统coo ...

  6. Django模板过滤器详解

    Django 模板过滤器也是我们在以后基于 Django 网站开发过程中会经常遇到的,如显示格式的转换.判断处理等.以下是 Django 过滤器列表,希望对为大家的开发带来一些方便. 一.形式:小写 ...

  7. django restframework 快速入门

    django restframework 快速入门 基本流程 建立 Models 依靠 Serialiers 将数据库取出的数据 Parse 为 API 的数据(可用于返回给客户端,也可用于浏览器显示 ...

  8. Django Restframework 实践(一)

    具备以下知识: django http://www.cnblogs.com/menkeyi/p/5882464.html http://www.cnblogs.com/menkeyi/p/588245 ...

  9. django safe 过滤器--不对字符串进行转义(转)

    unix下的binutils短小精悍,用胶水(俺经常成管道为胶水)紧密结合在一起释放巨大的能量.django的过滤器也学习了这个方式,每个版本的django都自带了一些builtin的filter,当 ...

随机推荐

  1. The server principal "sa" is not able to access the database "xxxx" under the current security context

    在SQL Server服务器上一个作业执行时,遇到下面错误信息: Message: Executed as user: dbo. The server principal "sa" ...

  2. 使用Navicat for Mysql连接mysql服务器

    使用Navicat for Mysql连接mysql服务器 在windows上用Navicat for Mysql 连接装在虚拟机Ubuntu上的mysql服务器时出现的问题的解决方案. Navica ...

  3. Python面试题(二)【转】

    转载出处http://www.cnblogs.com/goodhacker/p/3387027.html 1.python中类方法.类实例方法.静态方法有何区别? 区别: 类方法和静态方法都可以被类和 ...

  4. MySql基本使用方法

    一,基本概念 1, 常用的两种引擎:         (1) InnoDB        a,支持ACID,简单地说就是支持事务完整性.一致性:         b,支持行锁,以及类似ORACLE的一 ...

  5. 【PAT】B1009 说反话

    在输入时直接分别将每个单词放入字符串,逆序输出字符串数组 #include<stdio.h> int main(){ int num=0; char ans[90][90]; while( ...

  6. Python 列表&元组&字典&集合

    列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片.合并.删除等操作 可通过索引来向指定位置插入元素 可通过po ...

  7. eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二)

    eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二) 接上篇博客,本篇博客主要包含两个内容: 4.使用Android studio创建webservice客 ...

  8. python3编写网络爬虫21-scrapy框架的使用

    一.scrapy框架的使用 前面我们讲了pyspider 它可以快速的完成爬虫的编写 不过pyspider也有一些缺点 例如可配置化不高 异常处理能力有限对于一些反爬虫程度非常强的网站 爬取显得力不从 ...

  9. Linux 简介(day1)

    一.Linux 诞生于1991年 二.创始人:林纳斯.托瓦茨(Linus Torvalds) 三.logo:企鹅 四.Linux完整系统包括 1.Linux kernel (Linux 内核) 2.f ...

  10. WPF自定义控件(五)の用户控件(完结)

    用户控件,WPF中是继承自UserControl的控件,我们可以在里面融合我们的业务逻辑. 示例:(一个厌恶选择的用户控件) 后端: using iMicClassBase; using iMicCl ...