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

Ada*_*ver 5 django django-rest-framework

我基本上需要类似/?status=[active,processed]/?status=active,processed

我当前的设置是:'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',)并且仅正确过滤一个值(/?status=active

ils*_*005 6

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

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')
Run Code Online (Sandbox Code Playgroud)