django filter查询多选_Django-filter,让过滤如此简单

本文介绍了如何在Django REST Framework中利用Django-filter解决复杂的前端查询需求。通过安装配置、自定义过滤器类和使用流程,展示了Django-filter在图书查询案例中的应用,包括日期、标题和阅读数等多种过滤条件。
摘要由CSDN通过智能技术生成

在DRF框架的使用中,一个比较让人头疼的问题是,怎么满足前端那变态的数据过滤需求,特别当前端提供所谓的灵活查询,过滤条件更是五花八门,比如一般前端查询都简单判等查询:

path('book/<int:id>',views.BooksView.as_view(),name='book')
它对应的请求:
http://127.0.0.1:9000/book/1/

怎么查询书名中包含“英”字,日期大于“2019-3-14”等等诸如此类的请求。Django-filter这个组件就是要解决这样的问题。

1. 安装配置

Django-filter支持的Python版本和Django版本、DRF版本如下:

  • Python: 3.5, 3.6, 3.7, 3.8
  • Django: 1.11, 2.0, 2.1, 2.2, 3.0
  • DRF: 3.10+

在虚拟开发环境中安装:

pip install django-filter

在Django的项目配置文件中安装并配置django_filters应用:

INSTALLED_APPS = [
    ...
    'django_filters',
]

REST_FRAMEWORK = {
   # 过滤器默认后端
    'DEFAULT_FILTER_BACKENDS': (
           'django_filters.rest_framework.DjangoFilterBackend',),
}

2.使用流程

我们通过一个简单的图书查询来说明如果在DRF中使用Django-filter过滤器。图书模型如下:

# models.py
class Bookinfo(models.Model):
    btitle = models.CharField(max_length=200,verbose_name='标题')
    bpub_date = models.DateField(blank=True, null=True,verbose_name='出版日期')
    bread = models.IntegerField(null=True,verbose_name='阅读数量')
    bcomment = models.IntegerField(null=True,verbose_name='评论数量')
    bimage = models.CharField(max_length&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值