使用IN运算符筛选Django REST框架
我基本上需要像使用IN运算符筛选Django REST框架,django,django-rest-framework,Django,Django Rest Framework,我基本上需要像/?status=[活动,已处理]或/?status=活动,已处理 我当前的设置是:'DEFAULT\u FILTER\u BACKENDS':('rest\u framework.filters.DjangoFilterBackend',),它只正确过滤了一个值(/?status=active)我认为没有内置的功能。但是您可以实现一个自定义过滤器来实现这一点。此自定义筛选器可在筛选器集中使用 import django_filters as df class InListFil
/?status=[活动,已处理]
或/?status=活动,已处理
我当前的设置是:
'DEFAULT\u FILTER\u BACKENDS':('rest\u 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')
使用Class.object.filter方法时,可以使用“field_in”
class FileterdListAPIView(generics.ListAPIView):
serializer_class = FooSerializer
def get_queryset(self):
user_profile = self.kwargs['pk']
if user_profile is not None:
workers = Worker.objects.filter(user_profile = user_profile)
queryset = MyModel.objects.filter(worker_in=(workers))
else:
return ''
return queryset
这对我有用,谢谢。不过有一个更新,现在是
self.field\u name
,而不是self.name
。对于其他想知道的人,这就是如何将其添加到视图类中的方法:filter\u class=MyFilterSet