django - 使用 IN 运算符过滤 Django REST 框架

标签 django django-rest-framework

我基本上需要类似 /?status=[active,processed] 的东西或 /?status=active,processed
我当前的设置是:'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',)并且它只正确过滤了一个值( /?status=active )

最佳答案

我认为没有内置的功能。但是您可以实现自定义过滤器来做到这一点。您可以在过滤器集中使用此自定义过滤器。

import django_filters as df

class InListFilter(df.Filter):
    """
    Expects a comma separated list
    filters values in list
    """
    def filter(self, qs, value):
        if value:
            return qs.filter(**{self.name+'__in': value.split(',')})
        return qs

class MyFilterSet(df.FilterSet):
    status = InListFilter(name='status')

关于django - 使用 IN 运算符过滤 Django REST 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36250810/

相关文章:

Django FilterSet设置初始值

python - 如何清除Django中的表单数据

python - Django + Rest 框架 + twilio : Getitng status call back sid

django - 如何从一个序列化器调用序列化器的create()方法

javascript - 如何用Django REST Framework实现实时更新?

python - 当脚本在根目录之外时获取 scrapy 项目设置

python - cookie 和 token 的工作原理

python - 在 Ubuntu Server 16.04LTS 上将 JSON 写入文件导致 Unicode 错误

python - 类型不正确。预期pk值,DRF中收到的str。(一对一字段)

django - 自定义过滤器类中执行不必要的过滤器代码