我基本上需要/?status=[active,processed]
或/?status=active,processed
我当前的设置是:'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',)
并且它只是正确过滤了一个值(/?status=active
)
答案 0 :(得分:3)
我认为没有内置功能。但是您可以实现自定义过滤器来执行此操作。您可以在过滤网中使用此自定义过滤器。
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')
答案 1 :(得分:0)
使用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