Python django rest框架过滤器通过提供同一列的多个值返回空
我有一个名为OP的表,它有许多列,包括一个名为website的字符串类型的列。 使用Django rest framwork,我想过滤掉那些有website=FAO、BD、CD的行 现在,如果我使用Python django rest框架过滤器通过提供同一列的多个值返回空,python,django-rest-framework,Python,Django Rest Framework,我有一个名为OP的表,它有许多列,包括一个名为website的字符串类型的列。 使用Django rest framwork,我想过滤掉那些有website=FAO、BD、CD的行 现在,如果我使用https://...../op/?website=FAO,返回正确的数据,但如果我输入了许多值,如https://...../op/?website=FAO,CD,BD. 我怎样才能达到这个结果 这是我的代码和我的尝试 class op_filter(FilterSet) : #
https://...../op/?website=FAO
,返回正确的数据,但如果我输入了许多值,如https://...../op/?website=FAO,CD,BD.
我怎样才能达到这个结果
这是我的代码和我的尝试
class op_filter(FilterSet) :
# website = filters.CharFilter('website')
website = filters.CharFilter(method='filter_by_website')
......
......
class Meta :
model = Op
fields = ['website',.........]
def filter_by_website(self , queryset , name , value):
# I get strings like FAO,CD,BD thats why I split it
website_name = set(value.strip().split(','))
return queryset.filter(website__in=website_name)
class op_ViewSet(viewsets.ModelViewSet) :
queryset = Op.objects.all().filter()
serializer_class = op_Serializer
# permission_classes = (permissions.IsAuthenticated,)
pagination_class = PageNumberPagination
filter_backends = [DjangoFilterBackend , SearchFilter , OrderingFilter]
filter_class = op_filter
如何编写过滤函数,使其返回正确的数据
网站是OP表的一列
**是否尝试更新视图集的
get\u queryset
?我知道你可以使用过滤器,但它可以帮助识别问题。就像这样:
class op_ViewSet(viewsets.ModelViewSet) :
queryset = Op.objects.all() # No need to put filter here
serializer_class = op_Serializer
# permission_classes = (permissions.IsAuthenticated,)
pagination_class = PageNumberPagination
filter_backends = [DjangoFilterBackend , SearchFilter , OrderingFilter]
def get_queryset(self):
website_parameter = self.request.query_params.get('website', None)
if website_parameter is not None:
website_name = set(website_parameter.strip().split(','))
return Op.objects.filter(website__in=website_name)
return Op.objects.all()